From 1e863c74afdcb5741c9ffc983afddf96a627f9f8 Mon Sep 17 00:00:00 2001 From: Patrick Mahoney Date: Thu, 1 Jun 2017 22:09:16 -0400 Subject: [PATCH 1/9] Update for unity 1.6 --- Assets/HOTK/HOTK_Overlay.cs | 4 ++-- Assets/HOTK/HOTK_TrackedDevice.cs | 8 ++++---- Assets/HOTK/HOTK_TrackedDeviceManager.cs | 4 ++-- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/Assets/HOTK/HOTK_Overlay.cs b/Assets/HOTK/HOTK_Overlay.cs index e727abd..937c1af 100644 --- a/Assets/HOTK/HOTK_Overlay.cs +++ b/Assets/HOTK/HOTK_Overlay.cs @@ -610,7 +610,7 @@ private void UpdateOverlay() var tex = new Texture_t { handle = OverlayTexture.GetNativeTexturePtr(), - eType = SteamVR.instance.graphicsAPI, + eType = SteamVR.instance.textureType, eColorSpace = EColorSpace.Auto }; overlay.SetOverlayColor(_handle, 1f, 1f, 1f); @@ -708,7 +708,7 @@ private void UpdateRenderTexture() var tex = new Texture_t { handle = OverlayTexture.GetNativeTexturePtr(), - eType = SteamVR.instance.graphicsAPI, + eType = SteamVR.instance.textureType, eColorSpace = EColorSpace.Auto }; diff --git a/Assets/HOTK/HOTK_TrackedDevice.cs b/Assets/HOTK/HOTK_TrackedDevice.cs index 8503103..e7ba763 100644 --- a/Assets/HOTK/HOTK_TrackedDevice.cs +++ b/Assets/HOTK/HOTK_TrackedDevice.cs @@ -39,7 +39,7 @@ public enum EType private EType _type; - private void OnNewPoses(params object[] args) + private void OnNewPoses(params TrackedDevicePose_t[] args) { if (_type != Type) { @@ -79,7 +79,7 @@ private void OnNewPoses(params object[] args) var i = (int) Index; - var poses = (TrackedDevicePose_t[]) args[0]; + var poses = args; if (poses.Length <= i) return; @@ -130,12 +130,12 @@ private void OnControllerIndexChanged(ETrackedControllerRole role, uint index) public void OnEnable() { Reset(); - SteamVR_Utils.Event.Listen("new_poses", OnNewPoses); + SteamVR_Events.NewPoses.Listen(OnNewPoses); } public void OnDisable() { - SteamVR_Utils.Event.Remove("new_poses", OnNewPoses); + SteamVR_Events.NewPoses.Remove(OnNewPoses); Reset(); } diff --git a/Assets/HOTK/HOTK_TrackedDeviceManager.cs b/Assets/HOTK/HOTK_TrackedDeviceManager.cs index 264d53b..31b5fd2 100644 --- a/Assets/HOTK/HOTK_TrackedDeviceManager.cs +++ b/Assets/HOTK/HOTK_TrackedDeviceManager.cs @@ -65,8 +65,8 @@ private void UpdatePoses() var compositor = OpenVR.Compositor; if (compositor == null) return; compositor.GetLastPoses(_poses, _gamePoses); - SteamVR_Utils.Event.Send("new_poses", _poses); - SteamVR_Utils.Event.Send("new_poses_applied"); + SteamVR_Events.NewPoses.Send(_poses); + SteamVR_Events.NewPosesApplied.Send(); } /// From a5b50fde41491c2c9359ebe0e0a62736119661e9 Mon Sep 17 00:00:00 2001 From: Patrick Mahoney Date: Thu, 1 Jun 2017 22:10:14 -0400 Subject: [PATCH 2/9] Assets/Plugins/openvr_api.bundle.meta - import with unity 5.6 --- Assets/Plugins/openvr_api.bundle.meta | 37 ++++++++++++++++++++++++--- 1 file changed, 33 insertions(+), 4 deletions(-) diff --git a/Assets/Plugins/openvr_api.bundle.meta b/Assets/Plugins/openvr_api.bundle.meta index 7a63b74..089e14e 100644 --- a/Assets/Plugins/openvr_api.bundle.meta +++ b/Assets/Plugins/openvr_api.bundle.meta @@ -4,14 +4,43 @@ folderAsset: yes timeCreated: 1465633285 licenseType: Free PluginImporter: - serializedVersion: 1 + serializedVersion: 2 iconMap: {} executionOrder: {} isPreloaded: 0 + isOverridable: 0 platformData: - Any: - enabled: 1 - settings: {} + data: + first: + Any: + second: + enabled: 0 + settings: {} + data: + first: + Editor: Editor + second: + enabled: 1 + settings: + DefaultValueInitialized: true + data: + first: + Standalone: OSXIntel + second: + enabled: 1 + settings: {} + data: + first: + Standalone: OSXIntel64 + second: + enabled: 1 + settings: {} + data: + first: + Standalone: OSXUniversal + second: + enabled: 1 + settings: {} userData: assetBundleName: assetBundleVariant: From 0ba6237e982c4a0baa794e94307660683988a078 Mon Sep 17 00:00:00 2001 From: Patrick Mahoney Date: Thu, 1 Jun 2017 22:12:35 -0400 Subject: [PATCH 3/9] Assets/Plugins/openvr_api.cs --- Assets/Plugins/openvr_api.cs | 1260 +++++++++++++++++++++++++++++++--- 1 file changed, 1151 insertions(+), 109 deletions(-) diff --git a/Assets/Plugins/openvr_api.cs b/Assets/Plugins/openvr_api.cs index f31b0cd..33bfd25 100644 --- a/Assets/Plugins/openvr_api.cs +++ b/Assets/Plugins/openvr_api.cs @@ -1,4 +1,4 @@ -//======= Copyright 1996-2014, Valve Corporation, All rights reserved. ======== +//======= Copyright (c) Valve Corporation, All rights reserved. =============== // // Purpose: This file contains C#/managed code bindings for the OpenVR interfaces // This file is auto-generated, do not edit it. @@ -21,7 +21,7 @@ public struct IVRSystem internal _GetRecommendedRenderTargetSize GetRecommendedRenderTargetSize; [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate HmdMatrix44_t _GetProjectionMatrix(EVREye eEye, float fNearZ, float fFarZ, EGraphicsAPIConvention eProjType); + internal delegate HmdMatrix44_t _GetProjectionMatrix(EVREye eEye, float fNearZ, float fFarZ); [MarshalAs(UnmanagedType.FunctionPtr)] internal _GetProjectionMatrix GetProjectionMatrix; @@ -31,7 +31,7 @@ public struct IVRSystem internal _GetProjectionRaw GetProjectionRaw; [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate DistortionCoordinates_t _ComputeDistortion(EVREye eEye, float fU, float fV); + internal delegate bool _ComputeDistortion(EVREye eEye, float fU, float fV, ref DistortionCoordinates_t pDistortionCoordinates); [MarshalAs(UnmanagedType.FunctionPtr)] internal _ComputeDistortion ComputeDistortion; @@ -171,17 +171,17 @@ public struct IVRSystem internal _GetEventTypeNameFromEnum GetEventTypeNameFromEnum; [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate HiddenAreaMesh_t _GetHiddenAreaMesh(EVREye eEye); + internal delegate HiddenAreaMesh_t _GetHiddenAreaMesh(EVREye eEye, EHiddenAreaMeshType type); [MarshalAs(UnmanagedType.FunctionPtr)] internal _GetHiddenAreaMesh GetHiddenAreaMesh; [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate bool _GetControllerState(uint unControllerDeviceIndex, ref VRControllerState_t pControllerState); + internal delegate bool _GetControllerState(uint unControllerDeviceIndex, ref VRControllerState_t pControllerState, uint unControllerStateSize); [MarshalAs(UnmanagedType.FunctionPtr)] internal _GetControllerState GetControllerState; [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate bool _GetControllerStateWithPose(ETrackingUniverseOrigin eOrigin, uint unControllerDeviceIndex, ref VRControllerState_t pControllerState, ref TrackedDevicePose_t pTrackedDevicePose); + internal delegate bool _GetControllerStateWithPose(ETrackingUniverseOrigin eOrigin, uint unControllerDeviceIndex, ref VRControllerState_t pControllerState, uint unControllerStateSize, ref TrackedDevicePose_t pTrackedDevicePose); [MarshalAs(UnmanagedType.FunctionPtr)] internal _GetControllerStateWithPose GetControllerStateWithPose; @@ -257,6 +257,71 @@ public struct IVRExtendedDisplay } +[StructLayout(LayoutKind.Sequential)] +public struct IVRTrackedCamera +{ + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate IntPtr _GetCameraErrorNameFromEnum(EVRTrackedCameraError eCameraError); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetCameraErrorNameFromEnum GetCameraErrorNameFromEnum; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVRTrackedCameraError _HasCamera(uint nDeviceIndex, ref bool pHasCamera); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _HasCamera HasCamera; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVRTrackedCameraError _GetCameraFrameSize(uint nDeviceIndex, EVRTrackedCameraFrameType eFrameType, ref uint pnWidth, ref uint pnHeight, ref uint pnFrameBufferSize); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetCameraFrameSize GetCameraFrameSize; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVRTrackedCameraError _GetCameraIntrinsics(uint nDeviceIndex, EVRTrackedCameraFrameType eFrameType, ref HmdVector2_t pFocalLength, ref HmdVector2_t pCenter); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetCameraIntrinsics GetCameraIntrinsics; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVRTrackedCameraError _GetCameraProjection(uint nDeviceIndex, EVRTrackedCameraFrameType eFrameType, float flZNear, float flZFar, ref HmdMatrix44_t pProjection); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetCameraProjection GetCameraProjection; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVRTrackedCameraError _AcquireVideoStreamingService(uint nDeviceIndex, ref ulong pHandle); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _AcquireVideoStreamingService AcquireVideoStreamingService; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVRTrackedCameraError _ReleaseVideoStreamingService(ulong hTrackedCamera); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _ReleaseVideoStreamingService ReleaseVideoStreamingService; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVRTrackedCameraError _GetVideoStreamFrameBuffer(ulong hTrackedCamera, EVRTrackedCameraFrameType eFrameType, IntPtr pFrameBuffer, uint nFrameBufferSize, ref CameraVideoStreamFrameHeader_t pFrameHeader, uint nFrameHeaderSize); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetVideoStreamFrameBuffer GetVideoStreamFrameBuffer; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVRTrackedCameraError _GetVideoStreamTextureSize(uint nDeviceIndex, EVRTrackedCameraFrameType eFrameType, ref VRTextureBounds_t pTextureBounds, ref uint pnWidth, ref uint pnHeight); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetVideoStreamTextureSize GetVideoStreamTextureSize; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVRTrackedCameraError _GetVideoStreamTextureD3D11(ulong hTrackedCamera, EVRTrackedCameraFrameType eFrameType, IntPtr pD3D11DeviceOrResource, ref IntPtr ppD3D11ShaderResourceView, ref CameraVideoStreamFrameHeader_t pFrameHeader, uint nFrameHeaderSize); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetVideoStreamTextureD3D11 GetVideoStreamTextureD3D11; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVRTrackedCameraError _GetVideoStreamTextureGL(ulong hTrackedCamera, EVRTrackedCameraFrameType eFrameType, ref uint pglTextureId, ref CameraVideoStreamFrameHeader_t pFrameHeader, uint nFrameHeaderSize); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetVideoStreamTextureGL GetVideoStreamTextureGL; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVRTrackedCameraError _ReleaseVideoStreamTextureGL(ulong hTrackedCamera, uint glTextureId); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _ReleaseVideoStreamTextureGL ReleaseVideoStreamTextureGL; + +} + [StructLayout(LayoutKind.Sequential)] public struct IVRApplications { @@ -281,7 +346,7 @@ public struct IVRApplications internal _GetApplicationCount GetApplicationCount; [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate EVRApplicationError _GetApplicationKeyByIndex(uint unApplicationIndex, string pchAppKeyBuffer, uint unAppKeyBufferLen); + internal delegate EVRApplicationError _GetApplicationKeyByIndex(uint unApplicationIndex, System.Text.StringBuilder pchAppKeyBuffer, uint unAppKeyBufferLen); [MarshalAs(UnmanagedType.FunctionPtr)] internal _GetApplicationKeyByIndex GetApplicationKeyByIndex; @@ -300,6 +365,11 @@ public struct IVRApplications [MarshalAs(UnmanagedType.FunctionPtr)] internal _LaunchTemplateApplication LaunchTemplateApplication; + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVRApplicationError _LaunchApplicationFromMimeType(string pchMimeType, string pchArgs); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _LaunchApplicationFromMimeType LaunchApplicationFromMimeType; + [UnmanagedFunctionPointer(CallingConvention.StdCall)] internal delegate EVRApplicationError _LaunchDashboardOverlay(string pchAppKey); [MarshalAs(UnmanagedType.FunctionPtr)] @@ -326,7 +396,7 @@ public struct IVRApplications internal _GetApplicationsErrorNameFromEnum GetApplicationsErrorNameFromEnum; [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate uint _GetApplicationPropertyString(string pchAppKey, EVRApplicationProperty eProperty, string pchPropertyValueBuffer, uint unPropertyValueBufferLen, ref EVRApplicationError peError); + internal delegate uint _GetApplicationPropertyString(string pchAppKey, EVRApplicationProperty eProperty, System.Text.StringBuilder pchPropertyValueBuffer, uint unPropertyValueBufferLen, ref EVRApplicationError peError); [MarshalAs(UnmanagedType.FunctionPtr)] internal _GetApplicationPropertyString GetApplicationPropertyString; @@ -350,6 +420,31 @@ public struct IVRApplications [MarshalAs(UnmanagedType.FunctionPtr)] internal _GetApplicationAutoLaunch GetApplicationAutoLaunch; + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVRApplicationError _SetDefaultApplicationForMimeType(string pchAppKey, string pchMimeType); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _SetDefaultApplicationForMimeType SetDefaultApplicationForMimeType; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate bool _GetDefaultApplicationForMimeType(string pchMimeType, string pchAppKeyBuffer, uint unAppKeyBufferLen); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetDefaultApplicationForMimeType GetDefaultApplicationForMimeType; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate bool _GetApplicationSupportedMimeTypes(string pchAppKey, string pchMimeTypesBuffer, uint unMimeTypesBuffer); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetApplicationSupportedMimeTypes GetApplicationSupportedMimeTypes; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate uint _GetApplicationsThatSupportMimeType(string pchMimeType, string pchAppKeysThatSupportBuffer, uint unAppKeysThatSupportBuffer); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetApplicationsThatSupportMimeType GetApplicationsThatSupportMimeType; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate uint _GetApplicationLaunchArguments(uint unHandle, string pchArgs, uint unArgs); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetApplicationLaunchArguments GetApplicationLaunchArguments; + [UnmanagedFunctionPointer(CallingConvention.StdCall)] internal delegate EVRApplicationError _GetStartingApplication(string pchAppKeyBuffer, uint unAppKeyBufferLen); [MarshalAs(UnmanagedType.FunctionPtr)] @@ -380,6 +475,11 @@ public struct IVRApplications [MarshalAs(UnmanagedType.FunctionPtr)] internal _LaunchInternalProcess LaunchInternalProcess; + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate uint _GetCurrentSceneProcessId(); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetCurrentSceneProcessId GetCurrentSceneProcessId; + } [StructLayout(LayoutKind.Sequential)] @@ -580,21 +680,41 @@ public struct IVRCompositor [MarshalAs(UnmanagedType.FunctionPtr)] internal _GetFrameTiming GetFrameTiming; + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate uint _GetFrameTimings(ref Compositor_FrameTiming pTiming, uint nFrames); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetFrameTimings GetFrameTimings; + [UnmanagedFunctionPointer(CallingConvention.StdCall)] internal delegate float _GetFrameTimeRemaining(); [MarshalAs(UnmanagedType.FunctionPtr)] internal _GetFrameTimeRemaining GetFrameTimeRemaining; + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate void _GetCumulativeStats(ref Compositor_CumulativeStats pStats, uint nStatsSizeInBytes); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetCumulativeStats GetCumulativeStats; + [UnmanagedFunctionPointer(CallingConvention.StdCall)] internal delegate void _FadeToColor(float fSeconds, float fRed, float fGreen, float fBlue, float fAlpha, bool bBackground); [MarshalAs(UnmanagedType.FunctionPtr)] internal _FadeToColor FadeToColor; + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate HmdColor_t _GetCurrentFadeColor(bool bBackground); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetCurrentFadeColor GetCurrentFadeColor; + [UnmanagedFunctionPointer(CallingConvention.StdCall)] internal delegate void _FadeGrid(float fSeconds, bool bFadeIn); [MarshalAs(UnmanagedType.FunctionPtr)] internal _FadeGrid FadeGrid; + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate float _GetCurrentGridAlpha(); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetCurrentGridAlpha GetCurrentGridAlpha; + [UnmanagedFunctionPointer(CallingConvention.StdCall)] internal delegate EVRCompositorError _SetSkyboxOverride([In, Out] Texture_t[] pTextures, uint unTextureCount); [MarshalAs(UnmanagedType.FunctionPtr)] @@ -680,6 +800,46 @@ public struct IVRCompositor [MarshalAs(UnmanagedType.FunctionPtr)] internal _SuspendRendering SuspendRendering; + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVRCompositorError _GetMirrorTextureD3D11(EVREye eEye, IntPtr pD3D11DeviceOrResource, ref IntPtr ppD3D11ShaderResourceView); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetMirrorTextureD3D11 GetMirrorTextureD3D11; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate void _ReleaseMirrorTextureD3D11(IntPtr pD3D11ShaderResourceView); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _ReleaseMirrorTextureD3D11 ReleaseMirrorTextureD3D11; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVRCompositorError _GetMirrorTextureGL(EVREye eEye, ref uint pglTextureId, IntPtr pglSharedTextureHandle); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetMirrorTextureGL GetMirrorTextureGL; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate bool _ReleaseSharedGLTexture(uint glTextureId, IntPtr glSharedTextureHandle); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _ReleaseSharedGLTexture ReleaseSharedGLTexture; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate void _LockGLSharedTextureForAccess(IntPtr glSharedTextureHandle); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _LockGLSharedTextureForAccess LockGLSharedTextureForAccess; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate void _UnlockGLSharedTextureForAccess(IntPtr glSharedTextureHandle); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _UnlockGLSharedTextureForAccess UnlockGLSharedTextureForAccess; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate uint _GetVulkanInstanceExtensionsRequired(System.Text.StringBuilder pchValue, uint unBufferSize); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetVulkanInstanceExtensionsRequired GetVulkanInstanceExtensionsRequired; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate uint _GetVulkanDeviceExtensionsRequired(IntPtr pPhysicalDevice, System.Text.StringBuilder pchValue, uint unBufferSize); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetVulkanDeviceExtensionsRequired GetVulkanDeviceExtensionsRequired; + } [StructLayout(LayoutKind.Sequential)] @@ -770,6 +930,26 @@ public struct IVROverlay [MarshalAs(UnmanagedType.FunctionPtr)] internal _GetOverlayAlpha GetOverlayAlpha; + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVROverlayError _SetOverlayTexelAspect(ulong ulOverlayHandle, float fTexelAspect); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _SetOverlayTexelAspect SetOverlayTexelAspect; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVROverlayError _GetOverlayTexelAspect(ulong ulOverlayHandle, ref float pfTexelAspect); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetOverlayTexelAspect GetOverlayTexelAspect; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVROverlayError _SetOverlaySortOrder(ulong ulOverlayHandle, uint unSortOrder); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _SetOverlaySortOrder SetOverlaySortOrder; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVROverlayError _GetOverlaySortOrder(ulong ulOverlayHandle, ref uint punSortOrder); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetOverlaySortOrder GetOverlaySortOrder; + [UnmanagedFunctionPointer(CallingConvention.StdCall)] internal delegate EVROverlayError _SetOverlayWidthInMeters(ulong ulOverlayHandle, float fWidthInMeters); [MarshalAs(UnmanagedType.FunctionPtr)] @@ -946,7 +1126,7 @@ public struct IVROverlay internal _SetOverlayFromFile SetOverlayFromFile; [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate EVROverlayError _GetOverlayTexture(ulong ulOverlayHandle, ref IntPtr pNativeTextureHandle, IntPtr pNativeTextureRef, ref uint pWidth, ref uint pHeight, ref uint pNativeFormat, ref EGraphicsAPIConvention pAPI, ref EColorSpace pColorSpace); + internal delegate EVROverlayError _GetOverlayTexture(ulong ulOverlayHandle, ref IntPtr pNativeTextureHandle, IntPtr pNativeTextureRef, ref uint pWidth, ref uint pHeight, ref uint pNativeFormat, ref ETextureType pAPIType, ref EColorSpace pColorSpace, ref VRTextureBounds_t pTextureBounds); [MarshalAs(UnmanagedType.FunctionPtr)] internal _GetOverlayTexture GetOverlayTexture; @@ -955,6 +1135,11 @@ public struct IVROverlay [MarshalAs(UnmanagedType.FunctionPtr)] internal _ReleaseNativeOverlayHandle ReleaseNativeOverlayHandle; + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVROverlayError _GetOverlayTextureSize(ulong ulOverlayHandle, ref uint pWidth, ref uint pHeight); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetOverlayTextureSize GetOverlayTextureSize; + [UnmanagedFunctionPointer(CallingConvention.StdCall)] internal delegate EVROverlayError _CreateDashboardOverlay(string pchOverlayKey, string pchOverlayFriendlyName, ref ulong pMainHandle, ref ulong pThumbnailHandle); [MarshalAs(UnmanagedType.FunctionPtr)] @@ -1020,6 +1205,21 @@ public struct IVROverlay [MarshalAs(UnmanagedType.FunctionPtr)] internal _SetKeyboardPositionForOverlay SetKeyboardPositionForOverlay; + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVROverlayError _SetOverlayIntersectionMask(ulong ulOverlayHandle, ref VROverlayIntersectionMaskPrimitive_t pMaskPrimitives, uint unNumMaskPrimitives, uint unPrimitiveSize); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _SetOverlayIntersectionMask SetOverlayIntersectionMask; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVROverlayError _GetOverlayFlags(ulong ulOverlayHandle, ref uint pFlags); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetOverlayFlags GetOverlayFlags; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate VRMessageOverlayResponse _ShowMessageOverlay(string pchText, string pchCaption, string pchButton0Text, string pchButton1Text, string pchButton2Text, string pchButton3Text); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _ShowMessageOverlay ShowMessageOverlay; + } [StructLayout(LayoutKind.Sequential)] @@ -1100,6 +1300,21 @@ public struct IVRRenderModels [MarshalAs(UnmanagedType.FunctionPtr)] internal _RenderModelHasComponent RenderModelHasComponent; + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate uint _GetRenderModelThumbnailURL(string pchRenderModelName, System.Text.StringBuilder pchThumbnailURL, uint unThumbnailURLLen, ref EVRRenderModelError peError); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetRenderModelThumbnailURL GetRenderModelThumbnailURL; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate uint _GetRenderModelOriginalPath(string pchRenderModelName, System.Text.StringBuilder pchOriginalPath, uint unOriginalPathLen, ref EVRRenderModelError peError); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetRenderModelOriginalPath GetRenderModelOriginalPath; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate IntPtr _GetRenderModelErrorNameFromEnum(EVRRenderModelError error); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetRenderModelErrorNameFromEnum GetRenderModelErrorNameFromEnum; + } [StructLayout(LayoutKind.Sequential)] @@ -1131,44 +1346,44 @@ public struct IVRSettings internal _Sync Sync; [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate bool _GetBool(string pchSection, string pchSettingsKey, bool bDefaultValue, ref EVRSettingsError peError); + internal delegate void _SetBool(string pchSection, string pchSettingsKey, bool bValue, ref EVRSettingsError peError); [MarshalAs(UnmanagedType.FunctionPtr)] - internal _GetBool GetBool; + internal _SetBool SetBool; [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate void _SetBool(string pchSection, string pchSettingsKey, bool bValue, ref EVRSettingsError peError); + internal delegate void _SetInt32(string pchSection, string pchSettingsKey, int nValue, ref EVRSettingsError peError); [MarshalAs(UnmanagedType.FunctionPtr)] - internal _SetBool SetBool; + internal _SetInt32 SetInt32; [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate int _GetInt32(string pchSection, string pchSettingsKey, int nDefaultValue, ref EVRSettingsError peError); + internal delegate void _SetFloat(string pchSection, string pchSettingsKey, float flValue, ref EVRSettingsError peError); [MarshalAs(UnmanagedType.FunctionPtr)] - internal _GetInt32 GetInt32; + internal _SetFloat SetFloat; [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate void _SetInt32(string pchSection, string pchSettingsKey, int nValue, ref EVRSettingsError peError); + internal delegate void _SetString(string pchSection, string pchSettingsKey, string pchValue, ref EVRSettingsError peError); [MarshalAs(UnmanagedType.FunctionPtr)] - internal _SetInt32 SetInt32; + internal _SetString SetString; [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate float _GetFloat(string pchSection, string pchSettingsKey, float flDefaultValue, ref EVRSettingsError peError); + internal delegate bool _GetBool(string pchSection, string pchSettingsKey, ref EVRSettingsError peError); [MarshalAs(UnmanagedType.FunctionPtr)] - internal _GetFloat GetFloat; + internal _GetBool GetBool; [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate void _SetFloat(string pchSection, string pchSettingsKey, float flValue, ref EVRSettingsError peError); + internal delegate int _GetInt32(string pchSection, string pchSettingsKey, ref EVRSettingsError peError); [MarshalAs(UnmanagedType.FunctionPtr)] - internal _SetFloat SetFloat; + internal _GetInt32 GetInt32; [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate void _GetString(string pchSection, string pchSettingsKey, string pchValue, uint unValueLen, string pchDefaultValue, ref EVRSettingsError peError); + internal delegate float _GetFloat(string pchSection, string pchSettingsKey, ref EVRSettingsError peError); [MarshalAs(UnmanagedType.FunctionPtr)] - internal _GetString GetString; + internal _GetFloat GetFloat; [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate void _SetString(string pchSection, string pchSettingsKey, string pchValue, ref EVRSettingsError peError); + internal delegate void _GetString(string pchSection, string pchSettingsKey, System.Text.StringBuilder pchValue, uint unValueLen, ref EVRSettingsError peError); [MarshalAs(UnmanagedType.FunctionPtr)] - internal _SetString SetString; + internal _GetString GetString; [UnmanagedFunctionPointer(CallingConvention.StdCall)] internal delegate void _RemoveSection(string pchSection, ref EVRSettingsError peError); @@ -1182,6 +1397,61 @@ public struct IVRSettings } +[StructLayout(LayoutKind.Sequential)] +public struct IVRScreenshots +{ + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVRScreenshotError _RequestScreenshot(ref uint pOutScreenshotHandle, EVRScreenshotType type, string pchPreviewFilename, string pchVRFilename); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _RequestScreenshot RequestScreenshot; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVRScreenshotError _HookScreenshot([In, Out] EVRScreenshotType[] pSupportedTypes, int numTypes); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _HookScreenshot HookScreenshot; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVRScreenshotType _GetScreenshotPropertyType(uint screenshotHandle, ref EVRScreenshotError pError); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetScreenshotPropertyType GetScreenshotPropertyType; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate uint _GetScreenshotPropertyFilename(uint screenshotHandle, EVRScreenshotPropertyFilenames filenameType, System.Text.StringBuilder pchFilename, uint cchFilename, ref EVRScreenshotError pError); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetScreenshotPropertyFilename GetScreenshotPropertyFilename; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVRScreenshotError _UpdateScreenshotProgress(uint screenshotHandle, float flProgress); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _UpdateScreenshotProgress UpdateScreenshotProgress; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVRScreenshotError _TakeStereoScreenshot(ref uint pOutScreenshotHandle, string pchPreviewFilename, string pchVRFilename); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _TakeStereoScreenshot TakeStereoScreenshot; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVRScreenshotError _SubmitScreenshot(uint screenshotHandle, EVRScreenshotType type, string pchSourcePreviewFilename, string pchSourceVRFilename); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _SubmitScreenshot SubmitScreenshot; + +} + +[StructLayout(LayoutKind.Sequential)] +public struct IVRResources +{ + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate uint _LoadSharedResource(string pchResourceName, string pchBuffer, uint unBufferLen); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _LoadSharedResource LoadSharedResource; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate uint _GetResourceFullPath(string pchResourceName, string pchResourceTypeDirectory, string pchPathBuffer, uint unBufferLen); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetResourceFullPath GetResourceFullPath; + +} + public class CVRSystem { @@ -1196,9 +1466,9 @@ public void GetRecommendedRenderTargetSize(ref uint pnWidth,ref uint pnHeight) pnHeight = 0; FnTable.GetRecommendedRenderTargetSize(ref pnWidth,ref pnHeight); } - public HmdMatrix44_t GetProjectionMatrix(EVREye eEye,float fNearZ,float fFarZ,EGraphicsAPIConvention eProjType) + public HmdMatrix44_t GetProjectionMatrix(EVREye eEye,float fNearZ,float fFarZ) { - HmdMatrix44_t result = FnTable.GetProjectionMatrix(eEye,fNearZ,fFarZ,eProjType); + HmdMatrix44_t result = FnTable.GetProjectionMatrix(eEye,fNearZ,fFarZ); return result; } public void GetProjectionRaw(EVREye eEye,ref float pfLeft,ref float pfRight,ref float pfTop,ref float pfBottom) @@ -1209,9 +1479,9 @@ public void GetProjectionRaw(EVREye eEye,ref float pfLeft,ref float pfRight,ref pfBottom = 0; FnTable.GetProjectionRaw(eEye,ref pfLeft,ref pfRight,ref pfTop,ref pfBottom); } - public DistortionCoordinates_t ComputeDistortion(EVREye eEye,float fU,float fV) + public bool ComputeDistortion(EVREye eEye,float fU,float fV,ref DistortionCoordinates_t pDistortionCoordinates) { - DistortionCoordinates_t result = FnTable.ComputeDistortion(eEye,fU,fV); + bool result = FnTable.ComputeDistortion(eEye,fU,fV,ref pDistortionCoordinates); return result; } public HmdMatrix34_t GetEyeToHeadTransform(EVREye eEye) @@ -1331,7 +1601,7 @@ public uint GetStringTrackedDeviceProperty(uint unDeviceIndex,ETrackedDeviceProp public string GetPropErrorNameFromEnum(ETrackedPropertyError error) { IntPtr result = FnTable.GetPropErrorNameFromEnum(error); - return (string) Marshal.PtrToStructure(result, typeof(string)); + return Marshal.PtrToStringAnsi(result); } public bool PollNextEvent(ref VREvent_t pEvent,uint uncbVREvent) { @@ -1346,21 +1616,69 @@ public bool PollNextEventWithPose(ETrackingUniverseOrigin eOrigin,ref VREvent_t public string GetEventTypeNameFromEnum(EVREventType eType) { IntPtr result = FnTable.GetEventTypeNameFromEnum(eType); - return (string) Marshal.PtrToStructure(result, typeof(string)); + return Marshal.PtrToStringAnsi(result); } - public HiddenAreaMesh_t GetHiddenAreaMesh(EVREye eEye) + public HiddenAreaMesh_t GetHiddenAreaMesh(EVREye eEye,EHiddenAreaMeshType type) { - HiddenAreaMesh_t result = FnTable.GetHiddenAreaMesh(eEye); + HiddenAreaMesh_t result = FnTable.GetHiddenAreaMesh(eEye,type); return result; } - public bool GetControllerState(uint unControllerDeviceIndex,ref VRControllerState_t pControllerState) +// This is a terrible hack to workaround the fact that VRControllerState_t was +// originally mis-compiled with the wrong packing for Linux and OSX. + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate bool _GetControllerStatePacked(uint unControllerDeviceIndex,ref VRControllerState_t_Packed pControllerState,uint unControllerStateSize); + [StructLayout(LayoutKind.Explicit)] + struct GetControllerStateUnion + { + [FieldOffset(0)] + public IVRSystem._GetControllerState pGetControllerState; + [FieldOffset(0)] + public _GetControllerStatePacked pGetControllerStatePacked; + } + public bool GetControllerState(uint unControllerDeviceIndex,ref VRControllerState_t pControllerState,uint unControllerStateSize) { - bool result = FnTable.GetControllerState(unControllerDeviceIndex,ref pControllerState); + if ((System.Environment.OSVersion.Platform == System.PlatformID.MacOSX) || + (System.Environment.OSVersion.Platform == System.PlatformID.Unix)) + { + GetControllerStateUnion u; + VRControllerState_t_Packed state_packed = new VRControllerState_t_Packed(); + u.pGetControllerStatePacked = null; + u.pGetControllerState = FnTable.GetControllerState; + bool packed_result = u.pGetControllerStatePacked(unControllerDeviceIndex,ref state_packed,(uint)System.Runtime.InteropServices.Marshal.SizeOf(typeof(VRControllerState_t_Packed))); + + state_packed.Unpack(ref pControllerState); + return packed_result; + } + bool result = FnTable.GetControllerState(unControllerDeviceIndex,ref pControllerState,unControllerStateSize); return result; } - public bool GetControllerStateWithPose(ETrackingUniverseOrigin eOrigin,uint unControllerDeviceIndex,ref VRControllerState_t pControllerState,ref TrackedDevicePose_t pTrackedDevicePose) +// This is a terrible hack to workaround the fact that VRControllerState_t was +// originally mis-compiled with the wrong packing for Linux and OSX. + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate bool _GetControllerStateWithPosePacked(ETrackingUniverseOrigin eOrigin,uint unControllerDeviceIndex,ref VRControllerState_t_Packed pControllerState,uint unControllerStateSize,ref TrackedDevicePose_t pTrackedDevicePose); + [StructLayout(LayoutKind.Explicit)] + struct GetControllerStateWithPoseUnion + { + [FieldOffset(0)] + public IVRSystem._GetControllerStateWithPose pGetControllerStateWithPose; + [FieldOffset(0)] + public _GetControllerStateWithPosePacked pGetControllerStateWithPosePacked; + } + public bool GetControllerStateWithPose(ETrackingUniverseOrigin eOrigin,uint unControllerDeviceIndex,ref VRControllerState_t pControllerState,uint unControllerStateSize,ref TrackedDevicePose_t pTrackedDevicePose) { - bool result = FnTable.GetControllerStateWithPose(eOrigin,unControllerDeviceIndex,ref pControllerState,ref pTrackedDevicePose); + if ((System.Environment.OSVersion.Platform == System.PlatformID.MacOSX) || + (System.Environment.OSVersion.Platform == System.PlatformID.Unix)) + { + GetControllerStateWithPoseUnion u; + VRControllerState_t_Packed state_packed = new VRControllerState_t_Packed(); + u.pGetControllerStateWithPosePacked = null; + u.pGetControllerStateWithPose = FnTable.GetControllerStateWithPose; + bool packed_result = u.pGetControllerStateWithPosePacked(eOrigin,unControllerDeviceIndex,ref state_packed,(uint)System.Runtime.InteropServices.Marshal.SizeOf(typeof(VRControllerState_t_Packed)),ref pTrackedDevicePose); + + state_packed.Unpack(ref pControllerState); + return packed_result; + } + bool result = FnTable.GetControllerStateWithPose(eOrigin,unControllerDeviceIndex,ref pControllerState,unControllerStateSize,ref pTrackedDevicePose); return result; } public void TriggerHapticPulse(uint unControllerDeviceIndex,uint unAxisId,char usDurationMicroSec) @@ -1370,12 +1688,12 @@ public void TriggerHapticPulse(uint unControllerDeviceIndex,uint unAxisId,char u public string GetButtonIdNameFromEnum(EVRButtonId eButtonId) { IntPtr result = FnTable.GetButtonIdNameFromEnum(eButtonId); - return (string) Marshal.PtrToStructure(result, typeof(string)); + return Marshal.PtrToStringAnsi(result); } public string GetControllerAxisTypeNameFromEnum(EVRControllerAxisType eAxisType) { IntPtr result = FnTable.GetControllerAxisTypeNameFromEnum(eAxisType); - return (string) Marshal.PtrToStructure(result, typeof(string)); + return Marshal.PtrToStringAnsi(result); } public bool CaptureInputFocus() { @@ -1444,6 +1762,84 @@ public void GetDXGIOutputInfo(ref int pnAdapterIndex,ref int pnAdapterOutputInde } +public class CVRTrackedCamera +{ + IVRTrackedCamera FnTable; + internal CVRTrackedCamera(IntPtr pInterface) + { + FnTable = (IVRTrackedCamera)Marshal.PtrToStructure(pInterface, typeof(IVRTrackedCamera)); + } + public string GetCameraErrorNameFromEnum(EVRTrackedCameraError eCameraError) + { + IntPtr result = FnTable.GetCameraErrorNameFromEnum(eCameraError); + return Marshal.PtrToStringAnsi(result); + } + public EVRTrackedCameraError HasCamera(uint nDeviceIndex,ref bool pHasCamera) + { + pHasCamera = false; + EVRTrackedCameraError result = FnTable.HasCamera(nDeviceIndex,ref pHasCamera); + return result; + } + public EVRTrackedCameraError GetCameraFrameSize(uint nDeviceIndex,EVRTrackedCameraFrameType eFrameType,ref uint pnWidth,ref uint pnHeight,ref uint pnFrameBufferSize) + { + pnWidth = 0; + pnHeight = 0; + pnFrameBufferSize = 0; + EVRTrackedCameraError result = FnTable.GetCameraFrameSize(nDeviceIndex,eFrameType,ref pnWidth,ref pnHeight,ref pnFrameBufferSize); + return result; + } + public EVRTrackedCameraError GetCameraIntrinsics(uint nDeviceIndex,EVRTrackedCameraFrameType eFrameType,ref HmdVector2_t pFocalLength,ref HmdVector2_t pCenter) + { + EVRTrackedCameraError result = FnTable.GetCameraIntrinsics(nDeviceIndex,eFrameType,ref pFocalLength,ref pCenter); + return result; + } + public EVRTrackedCameraError GetCameraProjection(uint nDeviceIndex,EVRTrackedCameraFrameType eFrameType,float flZNear,float flZFar,ref HmdMatrix44_t pProjection) + { + EVRTrackedCameraError result = FnTable.GetCameraProjection(nDeviceIndex,eFrameType,flZNear,flZFar,ref pProjection); + return result; + } + public EVRTrackedCameraError AcquireVideoStreamingService(uint nDeviceIndex,ref ulong pHandle) + { + pHandle = 0; + EVRTrackedCameraError result = FnTable.AcquireVideoStreamingService(nDeviceIndex,ref pHandle); + return result; + } + public EVRTrackedCameraError ReleaseVideoStreamingService(ulong hTrackedCamera) + { + EVRTrackedCameraError result = FnTable.ReleaseVideoStreamingService(hTrackedCamera); + return result; + } + public EVRTrackedCameraError GetVideoStreamFrameBuffer(ulong hTrackedCamera,EVRTrackedCameraFrameType eFrameType,IntPtr pFrameBuffer,uint nFrameBufferSize,ref CameraVideoStreamFrameHeader_t pFrameHeader,uint nFrameHeaderSize) + { + EVRTrackedCameraError result = FnTable.GetVideoStreamFrameBuffer(hTrackedCamera,eFrameType,pFrameBuffer,nFrameBufferSize,ref pFrameHeader,nFrameHeaderSize); + return result; + } + public EVRTrackedCameraError GetVideoStreamTextureSize(uint nDeviceIndex,EVRTrackedCameraFrameType eFrameType,ref VRTextureBounds_t pTextureBounds,ref uint pnWidth,ref uint pnHeight) + { + pnWidth = 0; + pnHeight = 0; + EVRTrackedCameraError result = FnTable.GetVideoStreamTextureSize(nDeviceIndex,eFrameType,ref pTextureBounds,ref pnWidth,ref pnHeight); + return result; + } + public EVRTrackedCameraError GetVideoStreamTextureD3D11(ulong hTrackedCamera,EVRTrackedCameraFrameType eFrameType,IntPtr pD3D11DeviceOrResource,ref IntPtr ppD3D11ShaderResourceView,ref CameraVideoStreamFrameHeader_t pFrameHeader,uint nFrameHeaderSize) + { + EVRTrackedCameraError result = FnTable.GetVideoStreamTextureD3D11(hTrackedCamera,eFrameType,pD3D11DeviceOrResource,ref ppD3D11ShaderResourceView,ref pFrameHeader,nFrameHeaderSize); + return result; + } + public EVRTrackedCameraError GetVideoStreamTextureGL(ulong hTrackedCamera,EVRTrackedCameraFrameType eFrameType,ref uint pglTextureId,ref CameraVideoStreamFrameHeader_t pFrameHeader,uint nFrameHeaderSize) + { + pglTextureId = 0; + EVRTrackedCameraError result = FnTable.GetVideoStreamTextureGL(hTrackedCamera,eFrameType,ref pglTextureId,ref pFrameHeader,nFrameHeaderSize); + return result; + } + public EVRTrackedCameraError ReleaseVideoStreamTextureGL(ulong hTrackedCamera,uint glTextureId) + { + EVRTrackedCameraError result = FnTable.ReleaseVideoStreamTextureGL(hTrackedCamera,glTextureId); + return result; + } +} + + public class CVRApplications { IVRApplications FnTable; @@ -1471,7 +1867,7 @@ public uint GetApplicationCount() uint result = FnTable.GetApplicationCount(); return result; } - public EVRApplicationError GetApplicationKeyByIndex(uint unApplicationIndex,string pchAppKeyBuffer,uint unAppKeyBufferLen) + public EVRApplicationError GetApplicationKeyByIndex(uint unApplicationIndex,System.Text.StringBuilder pchAppKeyBuffer,uint unAppKeyBufferLen) { EVRApplicationError result = FnTable.GetApplicationKeyByIndex(unApplicationIndex,pchAppKeyBuffer,unAppKeyBufferLen); return result; @@ -1491,6 +1887,11 @@ public EVRApplicationError LaunchTemplateApplication(string pchTemplateAppKey,st EVRApplicationError result = FnTable.LaunchTemplateApplication(pchTemplateAppKey,pchNewAppKey,pKeys,(uint) pKeys.Length); return result; } + public EVRApplicationError LaunchApplicationFromMimeType(string pchMimeType,string pchArgs) + { + EVRApplicationError result = FnTable.LaunchApplicationFromMimeType(pchMimeType,pchArgs); + return result; + } public EVRApplicationError LaunchDashboardOverlay(string pchAppKey) { EVRApplicationError result = FnTable.LaunchDashboardOverlay(pchAppKey); @@ -1514,9 +1915,9 @@ public uint GetApplicationProcessId(string pchAppKey) public string GetApplicationsErrorNameFromEnum(EVRApplicationError error) { IntPtr result = FnTable.GetApplicationsErrorNameFromEnum(error); - return (string) Marshal.PtrToStructure(result, typeof(string)); + return Marshal.PtrToStringAnsi(result); } - public uint GetApplicationPropertyString(string pchAppKey,EVRApplicationProperty eProperty,string pchPropertyValueBuffer,uint unPropertyValueBufferLen,ref EVRApplicationError peError) + public uint GetApplicationPropertyString(string pchAppKey,EVRApplicationProperty eProperty,System.Text.StringBuilder pchPropertyValueBuffer,uint unPropertyValueBufferLen,ref EVRApplicationError peError) { uint result = FnTable.GetApplicationPropertyString(pchAppKey,eProperty,pchPropertyValueBuffer,unPropertyValueBufferLen,ref peError); return result; @@ -1541,6 +1942,31 @@ public bool GetApplicationAutoLaunch(string pchAppKey) bool result = FnTable.GetApplicationAutoLaunch(pchAppKey); return result; } + public EVRApplicationError SetDefaultApplicationForMimeType(string pchAppKey,string pchMimeType) + { + EVRApplicationError result = FnTable.SetDefaultApplicationForMimeType(pchAppKey,pchMimeType); + return result; + } + public bool GetDefaultApplicationForMimeType(string pchMimeType,string pchAppKeyBuffer,uint unAppKeyBufferLen) + { + bool result = FnTable.GetDefaultApplicationForMimeType(pchMimeType,pchAppKeyBuffer,unAppKeyBufferLen); + return result; + } + public bool GetApplicationSupportedMimeTypes(string pchAppKey,string pchMimeTypesBuffer,uint unMimeTypesBuffer) + { + bool result = FnTable.GetApplicationSupportedMimeTypes(pchAppKey,pchMimeTypesBuffer,unMimeTypesBuffer); + return result; + } + public uint GetApplicationsThatSupportMimeType(string pchMimeType,string pchAppKeysThatSupportBuffer,uint unAppKeysThatSupportBuffer) + { + uint result = FnTable.GetApplicationsThatSupportMimeType(pchMimeType,pchAppKeysThatSupportBuffer,unAppKeysThatSupportBuffer); + return result; + } + public uint GetApplicationLaunchArguments(uint unHandle,string pchArgs,uint unArgs) + { + uint result = FnTable.GetApplicationLaunchArguments(unHandle,pchArgs,unArgs); + return result; + } public EVRApplicationError GetStartingApplication(string pchAppKeyBuffer,uint unAppKeyBufferLen) { EVRApplicationError result = FnTable.GetStartingApplication(pchAppKeyBuffer,unAppKeyBufferLen); @@ -1559,7 +1985,7 @@ public EVRApplicationError PerformApplicationPrelaunchCheck(string pchAppKey) public string GetApplicationsTransitionStateNameFromEnum(EVRApplicationTransitionState state) { IntPtr result = FnTable.GetApplicationsTransitionStateNameFromEnum(state); - return (string) Marshal.PtrToStructure(result, typeof(string)); + return Marshal.PtrToStringAnsi(result); } public bool IsQuitUserPromptRequested() { @@ -1571,6 +1997,11 @@ public EVRApplicationError LaunchInternalProcess(string pchBinaryPath,string pch EVRApplicationError result = FnTable.LaunchInternalProcess(pchBinaryPath,pchArguments,pchWorkingDirectory); return result; } + public uint GetCurrentSceneProcessId() + { + uint result = FnTable.GetCurrentSceneProcessId(); + return result; + } } @@ -1789,19 +2220,38 @@ public bool GetFrameTiming(ref Compositor_FrameTiming pTiming,uint unFramesAgo) bool result = FnTable.GetFrameTiming(ref pTiming,unFramesAgo); return result; } + public uint GetFrameTimings(ref Compositor_FrameTiming pTiming,uint nFrames) + { + uint result = FnTable.GetFrameTimings(ref pTiming,nFrames); + return result; + } public float GetFrameTimeRemaining() { float result = FnTable.GetFrameTimeRemaining(); return result; } + public void GetCumulativeStats(ref Compositor_CumulativeStats pStats,uint nStatsSizeInBytes) + { + FnTable.GetCumulativeStats(ref pStats,nStatsSizeInBytes); + } public void FadeToColor(float fSeconds,float fRed,float fGreen,float fBlue,float fAlpha,bool bBackground) { FnTable.FadeToColor(fSeconds,fRed,fGreen,fBlue,fAlpha,bBackground); } + public HmdColor_t GetCurrentFadeColor(bool bBackground) + { + HmdColor_t result = FnTable.GetCurrentFadeColor(bBackground); + return result; + } public void FadeGrid(float fSeconds,bool bFadeIn) { FnTable.FadeGrid(fSeconds,bFadeIn); } + public float GetCurrentGridAlpha() + { + float result = FnTable.GetCurrentGridAlpha(); + return result; + } public EVRCompositorError SetSkyboxOverride(Texture_t [] pTextures) { EVRCompositorError result = FnTable.SetSkyboxOverride(pTextures,(uint) pTextures.Length); @@ -1877,6 +2327,44 @@ public void SuspendRendering(bool bSuspend) { FnTable.SuspendRendering(bSuspend); } + public EVRCompositorError GetMirrorTextureD3D11(EVREye eEye,IntPtr pD3D11DeviceOrResource,ref IntPtr ppD3D11ShaderResourceView) + { + EVRCompositorError result = FnTable.GetMirrorTextureD3D11(eEye,pD3D11DeviceOrResource,ref ppD3D11ShaderResourceView); + return result; + } + public void ReleaseMirrorTextureD3D11(IntPtr pD3D11ShaderResourceView) + { + FnTable.ReleaseMirrorTextureD3D11(pD3D11ShaderResourceView); + } + public EVRCompositorError GetMirrorTextureGL(EVREye eEye,ref uint pglTextureId,IntPtr pglSharedTextureHandle) + { + pglTextureId = 0; + EVRCompositorError result = FnTable.GetMirrorTextureGL(eEye,ref pglTextureId,pglSharedTextureHandle); + return result; + } + public bool ReleaseSharedGLTexture(uint glTextureId,IntPtr glSharedTextureHandle) + { + bool result = FnTable.ReleaseSharedGLTexture(glTextureId,glSharedTextureHandle); + return result; + } + public void LockGLSharedTextureForAccess(IntPtr glSharedTextureHandle) + { + FnTable.LockGLSharedTextureForAccess(glSharedTextureHandle); + } + public void UnlockGLSharedTextureForAccess(IntPtr glSharedTextureHandle) + { + FnTable.UnlockGLSharedTextureForAccess(glSharedTextureHandle); + } + public uint GetVulkanInstanceExtensionsRequired(System.Text.StringBuilder pchValue,uint unBufferSize) + { + uint result = FnTable.GetVulkanInstanceExtensionsRequired(pchValue,unBufferSize); + return result; + } + public uint GetVulkanDeviceExtensionsRequired(IntPtr pPhysicalDevice,System.Text.StringBuilder pchValue,uint unBufferSize) + { + uint result = FnTable.GetVulkanDeviceExtensionsRequired(pPhysicalDevice,pchValue,unBufferSize); + return result; + } } @@ -1934,7 +2422,7 @@ public EVROverlayError GetOverlayImageData(ulong ulOverlayHandle,IntPtr pvBuffer public string GetOverlayErrorNameFromEnum(EVROverlayError error) { IntPtr result = FnTable.GetOverlayErrorNameFromEnum(error); - return (string) Marshal.PtrToStructure(result, typeof(string)); + return Marshal.PtrToStringAnsi(result); } public EVROverlayError SetOverlayRenderingPid(ulong ulOverlayHandle,uint unPID) { @@ -1981,6 +2469,28 @@ public EVROverlayError GetOverlayAlpha(ulong ulOverlayHandle,ref float pfAlpha) EVROverlayError result = FnTable.GetOverlayAlpha(ulOverlayHandle,ref pfAlpha); return result; } + public EVROverlayError SetOverlayTexelAspect(ulong ulOverlayHandle,float fTexelAspect) + { + EVROverlayError result = FnTable.SetOverlayTexelAspect(ulOverlayHandle,fTexelAspect); + return result; + } + public EVROverlayError GetOverlayTexelAspect(ulong ulOverlayHandle,ref float pfTexelAspect) + { + pfTexelAspect = 0; + EVROverlayError result = FnTable.GetOverlayTexelAspect(ulOverlayHandle,ref pfTexelAspect); + return result; + } + public EVROverlayError SetOverlaySortOrder(ulong ulOverlayHandle,uint unSortOrder) + { + EVROverlayError result = FnTable.SetOverlaySortOrder(ulOverlayHandle,unSortOrder); + return result; + } + public EVROverlayError GetOverlaySortOrder(ulong ulOverlayHandle,ref uint punSortOrder) + { + punSortOrder = 0; + EVROverlayError result = FnTable.GetOverlaySortOrder(ulOverlayHandle,ref punSortOrder); + return result; + } public EVROverlayError SetOverlayWidthInMeters(ulong ulOverlayHandle,float fWidthInMeters) { EVROverlayError result = FnTable.SetOverlayWidthInMeters(ulOverlayHandle,fWidthInMeters); @@ -2161,12 +2671,12 @@ public EVROverlayError SetOverlayFromFile(ulong ulOverlayHandle,string pchFilePa EVROverlayError result = FnTable.SetOverlayFromFile(ulOverlayHandle,pchFilePath); return result; } - public EVROverlayError GetOverlayTexture(ulong ulOverlayHandle,ref IntPtr pNativeTextureHandle,IntPtr pNativeTextureRef,ref uint pWidth,ref uint pHeight,ref uint pNativeFormat,ref EGraphicsAPIConvention pAPI,ref EColorSpace pColorSpace) + public EVROverlayError GetOverlayTexture(ulong ulOverlayHandle,ref IntPtr pNativeTextureHandle,IntPtr pNativeTextureRef,ref uint pWidth,ref uint pHeight,ref uint pNativeFormat,ref ETextureType pAPIType,ref EColorSpace pColorSpace,ref VRTextureBounds_t pTextureBounds) { pWidth = 0; pHeight = 0; pNativeFormat = 0; - EVROverlayError result = FnTable.GetOverlayTexture(ulOverlayHandle,ref pNativeTextureHandle,pNativeTextureRef,ref pWidth,ref pHeight,ref pNativeFormat,ref pAPI,ref pColorSpace); + EVROverlayError result = FnTable.GetOverlayTexture(ulOverlayHandle,ref pNativeTextureHandle,pNativeTextureRef,ref pWidth,ref pHeight,ref pNativeFormat,ref pAPIType,ref pColorSpace,ref pTextureBounds); return result; } public EVROverlayError ReleaseNativeOverlayHandle(ulong ulOverlayHandle,IntPtr pNativeTextureHandle) @@ -2174,6 +2684,13 @@ public EVROverlayError ReleaseNativeOverlayHandle(ulong ulOverlayHandle,IntPtr p EVROverlayError result = FnTable.ReleaseNativeOverlayHandle(ulOverlayHandle,pNativeTextureHandle); return result; } + public EVROverlayError GetOverlayTextureSize(ulong ulOverlayHandle,ref uint pWidth,ref uint pHeight) + { + pWidth = 0; + pHeight = 0; + EVROverlayError result = FnTable.GetOverlayTextureSize(ulOverlayHandle,ref pWidth,ref pHeight); + return result; + } public EVROverlayError CreateDashboardOverlay(string pchOverlayKey,string pchOverlayFriendlyName,ref ulong pMainHandle,ref ulong pThumbnailHandle) { pMainHandle = 0; @@ -2238,6 +2755,22 @@ public void SetKeyboardPositionForOverlay(ulong ulOverlayHandle,HmdRect2_t avoid { FnTable.SetKeyboardPositionForOverlay(ulOverlayHandle,avoidRect); } + public EVROverlayError SetOverlayIntersectionMask(ulong ulOverlayHandle,ref VROverlayIntersectionMaskPrimitive_t pMaskPrimitives,uint unNumMaskPrimitives,uint unPrimitiveSize) + { + EVROverlayError result = FnTable.SetOverlayIntersectionMask(ulOverlayHandle,ref pMaskPrimitives,unNumMaskPrimitives,unPrimitiveSize); + return result; + } + public EVROverlayError GetOverlayFlags(ulong ulOverlayHandle,ref uint pFlags) + { + pFlags = 0; + EVROverlayError result = FnTable.GetOverlayFlags(ulOverlayHandle,ref pFlags); + return result; + } + public VRMessageOverlayResponse ShowMessageOverlay(string pchText,string pchCaption,string pchButton0Text,string pchButton1Text,string pchButton2Text,string pchButton3Text) + { + VRMessageOverlayResponse result = FnTable.ShowMessageOverlay(pchText,pchCaption,pchButton0Text,pchButton1Text,pchButton2Text,pchButton3Text); + return result; + } } @@ -2310,8 +2843,32 @@ public uint GetComponentRenderModelName(string pchRenderModelName,string pchComp uint result = FnTable.GetComponentRenderModelName(pchRenderModelName,pchComponentName,pchComponentRenderModelName,unComponentRenderModelNameLen); return result; } +// This is a terrible hack to workaround the fact that VRControllerState_t was +// originally mis-compiled with the wrong packing for Linux and OSX. + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate bool _GetComponentStatePacked(string pchRenderModelName,string pchComponentName,ref VRControllerState_t_Packed pControllerState,ref RenderModel_ControllerMode_State_t pState,ref RenderModel_ComponentState_t pComponentState); + [StructLayout(LayoutKind.Explicit)] + struct GetComponentStateUnion + { + [FieldOffset(0)] + public IVRRenderModels._GetComponentState pGetComponentState; + [FieldOffset(0)] + public _GetComponentStatePacked pGetComponentStatePacked; + } public bool GetComponentState(string pchRenderModelName,string pchComponentName,ref VRControllerState_t pControllerState,ref RenderModel_ControllerMode_State_t pState,ref RenderModel_ComponentState_t pComponentState) { + if ((System.Environment.OSVersion.Platform == System.PlatformID.MacOSX) || + (System.Environment.OSVersion.Platform == System.PlatformID.Unix)) + { + GetComponentStateUnion u; + VRControllerState_t_Packed state_packed = new VRControllerState_t_Packed(); + u.pGetComponentStatePacked = null; + u.pGetComponentState = FnTable.GetComponentState; + bool packed_result = u.pGetComponentStatePacked(pchRenderModelName,pchComponentName,ref state_packed,ref pState,ref pComponentState); + + state_packed.Unpack(ref pControllerState); + return packed_result; + } bool result = FnTable.GetComponentState(pchRenderModelName,pchComponentName,ref pControllerState,ref pState,ref pComponentState); return result; } @@ -2320,6 +2877,21 @@ public bool RenderModelHasComponent(string pchRenderModelName,string pchComponen bool result = FnTable.RenderModelHasComponent(pchRenderModelName,pchComponentName); return result; } + public uint GetRenderModelThumbnailURL(string pchRenderModelName,System.Text.StringBuilder pchThumbnailURL,uint unThumbnailURLLen,ref EVRRenderModelError peError) + { + uint result = FnTable.GetRenderModelThumbnailURL(pchRenderModelName,pchThumbnailURL,unThumbnailURLLen,ref peError); + return result; + } + public uint GetRenderModelOriginalPath(string pchRenderModelName,System.Text.StringBuilder pchOriginalPath,uint unOriginalPathLen,ref EVRRenderModelError peError) + { + uint result = FnTable.GetRenderModelOriginalPath(pchRenderModelName,pchOriginalPath,unOriginalPathLen,ref peError); + return result; + } + public string GetRenderModelErrorNameFromEnum(EVRRenderModelError error) + { + IntPtr result = FnTable.GetRenderModelErrorNameFromEnum(error); + return Marshal.PtrToStringAnsi(result); + } } @@ -2354,47 +2926,47 @@ internal CVRSettings(IntPtr pInterface) public string GetSettingsErrorNameFromEnum(EVRSettingsError eError) { IntPtr result = FnTable.GetSettingsErrorNameFromEnum(eError); - return (string) Marshal.PtrToStructure(result, typeof(string)); + return Marshal.PtrToStringAnsi(result); } public bool Sync(bool bForce,ref EVRSettingsError peError) { bool result = FnTable.Sync(bForce,ref peError); return result; } - public bool GetBool(string pchSection,string pchSettingsKey,bool bDefaultValue,ref EVRSettingsError peError) - { - bool result = FnTable.GetBool(pchSection,pchSettingsKey,bDefaultValue,ref peError); - return result; - } public void SetBool(string pchSection,string pchSettingsKey,bool bValue,ref EVRSettingsError peError) { FnTable.SetBool(pchSection,pchSettingsKey,bValue,ref peError); } - public int GetInt32(string pchSection,string pchSettingsKey,int nDefaultValue,ref EVRSettingsError peError) - { - int result = FnTable.GetInt32(pchSection,pchSettingsKey,nDefaultValue,ref peError); - return result; - } public void SetInt32(string pchSection,string pchSettingsKey,int nValue,ref EVRSettingsError peError) { FnTable.SetInt32(pchSection,pchSettingsKey,nValue,ref peError); } - public float GetFloat(string pchSection,string pchSettingsKey,float flDefaultValue,ref EVRSettingsError peError) + public void SetFloat(string pchSection,string pchSettingsKey,float flValue,ref EVRSettingsError peError) + { + FnTable.SetFloat(pchSection,pchSettingsKey,flValue,ref peError); + } + public void SetString(string pchSection,string pchSettingsKey,string pchValue,ref EVRSettingsError peError) + { + FnTable.SetString(pchSection,pchSettingsKey,pchValue,ref peError); + } + public bool GetBool(string pchSection,string pchSettingsKey,ref EVRSettingsError peError) { - float result = FnTable.GetFloat(pchSection,pchSettingsKey,flDefaultValue,ref peError); + bool result = FnTable.GetBool(pchSection,pchSettingsKey,ref peError); return result; } - public void SetFloat(string pchSection,string pchSettingsKey,float flValue,ref EVRSettingsError peError) + public int GetInt32(string pchSection,string pchSettingsKey,ref EVRSettingsError peError) { - FnTable.SetFloat(pchSection,pchSettingsKey,flValue,ref peError); + int result = FnTable.GetInt32(pchSection,pchSettingsKey,ref peError); + return result; } - public void GetString(string pchSection,string pchSettingsKey,string pchValue,uint unValueLen,string pchDefaultValue,ref EVRSettingsError peError) + public float GetFloat(string pchSection,string pchSettingsKey,ref EVRSettingsError peError) { - FnTable.GetString(pchSection,pchSettingsKey,pchValue,unValueLen,pchDefaultValue,ref peError); + float result = FnTable.GetFloat(pchSection,pchSettingsKey,ref peError); + return result; } - public void SetString(string pchSection,string pchSettingsKey,string pchValue,ref EVRSettingsError peError) + public void GetString(string pchSection,string pchSettingsKey,System.Text.StringBuilder pchValue,uint unValueLen,ref EVRSettingsError peError) { - FnTable.SetString(pchSection,pchSettingsKey,pchValue,ref peError); + FnTable.GetString(pchSection,pchSettingsKey,pchValue,unValueLen,ref peError); } public void RemoveSection(string pchSection,ref EVRSettingsError peError) { @@ -2407,23 +2979,90 @@ public void RemoveKeyInSection(string pchSection,string pchSettingsKey,ref EVRSe } +public class CVRScreenshots +{ + IVRScreenshots FnTable; + internal CVRScreenshots(IntPtr pInterface) + { + FnTable = (IVRScreenshots)Marshal.PtrToStructure(pInterface, typeof(IVRScreenshots)); + } + public EVRScreenshotError RequestScreenshot(ref uint pOutScreenshotHandle,EVRScreenshotType type,string pchPreviewFilename,string pchVRFilename) + { + pOutScreenshotHandle = 0; + EVRScreenshotError result = FnTable.RequestScreenshot(ref pOutScreenshotHandle,type,pchPreviewFilename,pchVRFilename); + return result; + } + public EVRScreenshotError HookScreenshot(EVRScreenshotType [] pSupportedTypes) + { + EVRScreenshotError result = FnTable.HookScreenshot(pSupportedTypes,(int) pSupportedTypes.Length); + return result; + } + public EVRScreenshotType GetScreenshotPropertyType(uint screenshotHandle,ref EVRScreenshotError pError) + { + EVRScreenshotType result = FnTable.GetScreenshotPropertyType(screenshotHandle,ref pError); + return result; + } + public uint GetScreenshotPropertyFilename(uint screenshotHandle,EVRScreenshotPropertyFilenames filenameType,System.Text.StringBuilder pchFilename,uint cchFilename,ref EVRScreenshotError pError) + { + uint result = FnTable.GetScreenshotPropertyFilename(screenshotHandle,filenameType,pchFilename,cchFilename,ref pError); + return result; + } + public EVRScreenshotError UpdateScreenshotProgress(uint screenshotHandle,float flProgress) + { + EVRScreenshotError result = FnTable.UpdateScreenshotProgress(screenshotHandle,flProgress); + return result; + } + public EVRScreenshotError TakeStereoScreenshot(ref uint pOutScreenshotHandle,string pchPreviewFilename,string pchVRFilename) + { + pOutScreenshotHandle = 0; + EVRScreenshotError result = FnTable.TakeStereoScreenshot(ref pOutScreenshotHandle,pchPreviewFilename,pchVRFilename); + return result; + } + public EVRScreenshotError SubmitScreenshot(uint screenshotHandle,EVRScreenshotType type,string pchSourcePreviewFilename,string pchSourceVRFilename) + { + EVRScreenshotError result = FnTable.SubmitScreenshot(screenshotHandle,type,pchSourcePreviewFilename,pchSourceVRFilename); + return result; + } +} + + +public class CVRResources +{ + IVRResources FnTable; + internal CVRResources(IntPtr pInterface) + { + FnTable = (IVRResources)Marshal.PtrToStructure(pInterface, typeof(IVRResources)); + } + public uint LoadSharedResource(string pchResourceName,string pchBuffer,uint unBufferLen) + { + uint result = FnTable.LoadSharedResource(pchResourceName,pchBuffer,unBufferLen); + return result; + } + public uint GetResourceFullPath(string pchResourceName,string pchResourceTypeDirectory,string pchPathBuffer,uint unBufferLen) + { + uint result = FnTable.GetResourceFullPath(pchResourceName,pchResourceTypeDirectory,pchPathBuffer,unBufferLen); + return result; + } +} + + public class OpenVRInterop { - [DllImportAttribute("openvr_api", EntryPoint = "VR_InitInternal")] + [DllImportAttribute("openvr_api", EntryPoint = "VR_InitInternal", CallingConvention = CallingConvention.Cdecl)] internal static extern uint InitInternal(ref EVRInitError peError, EVRApplicationType eApplicationType); - [DllImportAttribute("openvr_api", EntryPoint = "VR_ShutdownInternal")] + [DllImportAttribute("openvr_api", EntryPoint = "VR_ShutdownInternal", CallingConvention = CallingConvention.Cdecl)] internal static extern void ShutdownInternal(); - [DllImportAttribute("openvr_api", EntryPoint = "VR_IsHmdPresent")] + [DllImportAttribute("openvr_api", EntryPoint = "VR_IsHmdPresent", CallingConvention = CallingConvention.Cdecl)] internal static extern bool IsHmdPresent(); - [DllImportAttribute("openvr_api", EntryPoint = "VR_IsRuntimeInstalled")] + [DllImportAttribute("openvr_api", EntryPoint = "VR_IsRuntimeInstalled", CallingConvention = CallingConvention.Cdecl)] internal static extern bool IsRuntimeInstalled(); - [DllImportAttribute("openvr_api", EntryPoint = "VR_GetStringForHmdError")] + [DllImportAttribute("openvr_api", EntryPoint = "VR_GetStringForHmdError", CallingConvention = CallingConvention.Cdecl)] internal static extern IntPtr GetStringForHmdError(EVRInitError error); - [DllImportAttribute("openvr_api", EntryPoint = "VR_GetGenericInterface")] + [DllImportAttribute("openvr_api", EntryPoint = "VR_GetGenericInterface", CallingConvention = CallingConvention.Cdecl)] internal static extern IntPtr GetGenericInterface([In, MarshalAs(UnmanagedType.LPStr)] string pchInterfaceVersion, ref EVRInitError peError); - [DllImportAttribute("openvr_api", EntryPoint = "VR_IsInterfaceVersionValid")] + [DllImportAttribute("openvr_api", EntryPoint = "VR_IsInterfaceVersionValid", CallingConvention = CallingConvention.Cdecl)] internal static extern bool IsInterfaceVersionValid([In, MarshalAs(UnmanagedType.LPStr)] string pchInterfaceVersion); - [DllImportAttribute("openvr_api", EntryPoint = "VR_GetInitToken")] + [DllImportAttribute("openvr_api", EntryPoint = "VR_GetInitToken", CallingConvention = CallingConvention.Cdecl)] internal static extern uint GetInitToken(); } @@ -2433,10 +3072,13 @@ public enum EVREye Eye_Left = 0, Eye_Right = 1, } -public enum EGraphicsAPIConvention +public enum ETextureType { - API_DirectX = 0, - API_OpenGL = 1, + DirectX = 0, + OpenGL = 1, + Vulkan = 2, + IOSurface = 3, + DirectX12 = 4, } public enum EColorSpace { @@ -2457,8 +3099,8 @@ public enum ETrackedDeviceClass Invalid = 0, HMD = 1, Controller = 2, + GenericTracker = 3, TrackingReference = 4, - Other = 1000, } public enum ETrackedControllerRole { @@ -2474,6 +3116,7 @@ public enum ETrackingUniverseOrigin } public enum ETrackedDeviceProperty { + Prop_Invalid = 0, Prop_TrackingSystemName_String = 1000, Prop_ModelNumber_String = 1001, Prop_SerialNumber_String = 1002, @@ -2507,6 +3150,8 @@ public enum ETrackedDeviceProperty Prop_HasCamera_Bool = 1030, Prop_DriverVersion_String = 1031, Prop_Firmware_ForceUpdateRequired_Bool = 1032, + Prop_ViveSystemButtonFixRequired_Bool = 1033, + Prop_ParentDriver_Uint64 = 1034, Prop_ReportsTimeSinceVSync_Bool = 2000, Prop_SecondsFromVsyncToPhotons_Float = 2001, Prop_DisplayFrequency_Float = 2002, @@ -2541,6 +3186,15 @@ public enum ETrackedDeviceProperty Prop_DisplayHardwareVersion_Uint64 = 2031, Prop_AudioFirmwareVersion_Uint64 = 2032, Prop_CameraCompatibilityMode_Int32 = 2033, + Prop_ScreenshotHorizontalFieldOfViewDegrees_Float = 2034, + Prop_ScreenshotVerticalFieldOfViewDegrees_Float = 2035, + Prop_DisplaySuppressed_Bool = 2036, + Prop_DisplayAllowNightMode_Bool = 2037, + Prop_DisplayMCImageWidth_Int32 = 2038, + Prop_DisplayMCImageHeight_Int32 = 2039, + Prop_DisplayMCImageNumChannels_Int32 = 2040, + Prop_DisplayMCImageData_Binary = 2041, + Prop_UsesDriverDirectMode_Bool = 2042, Prop_AttachedDeviceId_String = 3000, Prop_SupportedButtons_Uint64 = 3001, Prop_Axis0Type_Int32 = 3002, @@ -2548,6 +3202,7 @@ public enum ETrackedDeviceProperty Prop_Axis2Type_Int32 = 3004, Prop_Axis3Type_Int32 = 3005, Prop_Axis4Type_Int32 = 3006, + Prop_ControllerRoleHint_Int32 = 3007, Prop_FieldOfViewLeftDegrees_Float = 4000, Prop_FieldOfViewRightDegrees_Float = 4001, Prop_FieldOfViewTopDegrees_Float = 4002, @@ -2555,6 +3210,19 @@ public enum ETrackedDeviceProperty Prop_TrackingRangeMinimumMeters_Float = 4004, Prop_TrackingRangeMaximumMeters_Float = 4005, Prop_ModeLabel_String = 4006, + Prop_IconPathName_String = 5000, + Prop_NamedIconPathDeviceOff_String = 5001, + Prop_NamedIconPathDeviceSearching_String = 5002, + Prop_NamedIconPathDeviceSearchingAlert_String = 5003, + Prop_NamedIconPathDeviceReady_String = 5004, + Prop_NamedIconPathDeviceReadyAlert_String = 5005, + Prop_NamedIconPathDeviceNotReady_String = 5006, + Prop_NamedIconPathDeviceStandby_String = 5007, + Prop_NamedIconPathDeviceAlertLow_String = 5008, + Prop_DisplayHiddenArea_Binary_Start = 5100, + Prop_DisplayHiddenArea_Binary_End = 5150, + Prop_UserConfigPath_String = 6000, + Prop_InstallPath_String = 6001, Prop_VendorSpecific_Reserved_Start = 10000, Prop_VendorSpecific_Reserved_End = 10999, } @@ -2570,12 +3238,15 @@ public enum ETrackedPropertyError TrackedProp_ValueNotProvidedByDevice = 7, TrackedProp_StringExceedsMaximumLength = 8, TrackedProp_NotYetAvailable = 9, + TrackedProp_PermissionDenied = 10, + TrackedProp_InvalidOperation = 11, } public enum EVRSubmitFlags { Submit_Default = 0, Submit_LensDistortionAlreadyApplied = 1, Submit_GlRenderBuffer = 2, + Submit_Reserved = 4, } public enum EVRState { @@ -2587,6 +3258,7 @@ public enum EVRState Ready_Alert = 4, NotReady = 5, Standby = 6, + Ready_Alert_Low = 7, } public enum EVREventType { @@ -2600,6 +3272,9 @@ public enum EVREventType VREvent_EnterStandbyMode = 106, VREvent_LeaveStandbyMode = 107, VREvent_TrackedDeviceRoleChanged = 108, + VREvent_WatchdogWakeUpRequested = 109, + VREvent_LensDistortionChanged = 110, + VREvent_PropertyChanged = 111, VREvent_ButtonPress = 200, VREvent_ButtonUnpress = 201, VREvent_ButtonTouch = 202, @@ -2611,6 +3286,7 @@ public enum EVREventType VREvent_FocusLeave = 304, VREvent_Scroll = 305, VREvent_TouchPadMove = 306, + VREvent_OverlayFocusChanged = 307, VREvent_InputFocusCaptured = 400, VREvent_InputFocusReleased = 401, VREvent_SceneFocusLost = 402, @@ -2618,6 +3294,7 @@ public enum EVREventType VREvent_SceneApplicationChanged = 404, VREvent_SceneFocusChanged = 405, VREvent_InputFocusChanged = 406, + VREvent_SceneApplicationSecondaryRenderingStarted = 407, VREvent_HideRenderModels = 410, VREvent_ShowRenderModels = 411, VREvent_OverlayShown = 500, @@ -2636,6 +3313,15 @@ public enum EVREventType VREvent_OverlaySharedTextureChanged = 513, VREvent_DashboardGuideButtonDown = 514, VREvent_DashboardGuideButtonUp = 515, + VREvent_ScreenshotTriggered = 516, + VREvent_ImageFailed = 517, + VREvent_DashboardOverlayCreated = 518, + VREvent_RequestScreenshot = 520, + VREvent_ScreenshotTaken = 521, + VREvent_ScreenshotFailed = 522, + VREvent_SubmitScreenshotToDashboard = 523, + VREvent_ScreenshotProgressToDashboard = 524, + VREvent_PrimaryDashboardDeviceChanged = 525, VREvent_Notification_Shown = 600, VREvent_Notification_Hidden = 601, VREvent_Notification_BeginInteraction = 602, @@ -2654,6 +3340,9 @@ public enum EVREventType VREvent_BackgroundSettingHasChanged = 850, VREvent_CameraSettingsHaveChanged = 851, VREvent_ReprojectionSettingHasChanged = 852, + VREvent_ModelSkinSettingsHaveChanged = 853, + VREvent_EnvironmentSettingsHaveChanged = 854, + VREvent_PowerSettingsHaveChanged = 855, VREvent_StatusUpdate = 900, VREvent_MCImageUpdated = 1000, VREvent_FirmwareUpdateStarted = 1100, @@ -2664,6 +3353,9 @@ public enum EVREventType VREvent_ApplicationTransitionStarted = 1300, VREvent_ApplicationTransitionAborted = 1301, VREvent_ApplicationTransitionNewAppStarted = 1302, + VREvent_ApplicationListUpdated = 1303, + VREvent_ApplicationMimeTypeLoad = 1304, + VREvent_ApplicationTransitionNewAppLaunchComplete = 1305, VREvent_Compositor_MirrorWindowShown = 1400, VREvent_Compositor_MirrorWindowHidden = 1401, VREvent_Compositor_ChaperoneBoundsShown = 1410, @@ -2672,9 +3364,11 @@ public enum EVREventType VREvent_TrackedCamera_StopVideoStream = 1501, VREvent_TrackedCamera_PauseVideoStream = 1502, VREvent_TrackedCamera_ResumeVideoStream = 1503, + VREvent_TrackedCamera_EditingSurface = 1550, VREvent_PerformanceTest_EnableCapture = 1600, VREvent_PerformanceTest_DisableCapture = 1601, VREvent_PerformanceTest_FidelityLevel = 1602, + VREvent_MessageOverlay_Closed = 1650, VREvent_VendorSpecific_Reserved_Start = 10000, VREvent_VendorSpecific_Reserved_End = 19999, } @@ -2696,6 +3390,7 @@ public enum EVRButtonId k_EButton_DPad_Right = 5, k_EButton_DPad_Down = 6, k_EButton_A = 7, + k_EButton_ProximitySensor = 31, k_EButton_Axis0 = 32, k_EButton_Axis1 = 33, k_EButton_Axis2 = 34, @@ -2712,6 +3407,13 @@ public enum EVRMouseButton Right = 2, Middle = 4, } +public enum EHiddenAreaMeshType +{ + k_eHiddenAreaMesh_Standard = 0, + k_eHiddenAreaMesh_Inverse = 1, + k_eHiddenAreaMesh_LineLoop = 2, + k_eHiddenAreaMesh_Max = 3, +} public enum EVRControllerAxisType { k_eControllerAxis_None = 0, @@ -2752,8 +3454,10 @@ public enum EVROverlayError RequestFailed = 23, InvalidTexture = 24, UnableToLoadFile = 25, - VROVerlayError_KeyboardAlreadyInUse = 26, + KeyboardAlreadyInUse = 26, NoNeighbor = 27, + TooManyMaskPrimitives = 29, + BadMaskPrimitive = 30, } public enum EVRApplicationType { @@ -2763,6 +3467,8 @@ public enum EVRApplicationType VRApplication_Background = 3, VRApplication_Utility = 4, VRApplication_VRMonitor = 5, + VRApplication_SteamWatchdog = 6, + VRApplication_Max = 7, } public enum EVRFirmwareError { @@ -2776,6 +3482,7 @@ public enum EVRNotificationError InvalidNotificationId = 100, NotificationQueueFull = 101, InvalidOverlayHandle = 102, + SystemWithUserValueAlreadyExists = 103, } public enum EVRInitError { @@ -2806,6 +3513,16 @@ public enum EVRInitError Init_NotSupportedWithCompositor = 122, Init_NotAvailableToUtilityApps = 123, Init_Internal = 124, + Init_HmdDriverIdIsNone = 125, + Init_HmdNotFoundPresenceFailed = 126, + Init_VRMonitorNotFound = 127, + Init_VRMonitorStartupFailed = 128, + Init_LowPowerWatchdogNotSupported = 129, + Init_InvalidApplicationType = 130, + Init_NotAvailableToWatchdogApps = 131, + Init_WatchdogDisabledInSettings = 132, + Init_VRDashboardNotFound = 133, + Init_VRDashboardStartupFailed = 134, Driver_Failed = 200, Driver_Unknown = 201, Driver_HmdUnknown = 202, @@ -2815,15 +3532,23 @@ public enum EVRInitError Driver_NotCalibrated = 206, Driver_CalibrationInvalid = 207, Driver_HmdDisplayNotFound = 208, + Driver_TrackedDeviceInterfaceUnknown = 209, + Driver_HmdDriverIdOutOfBounds = 211, + Driver_HmdDisplayMirrored = 212, IPC_ServerInitFailed = 300, IPC_ConnectFailed = 301, IPC_SharedStateInitFailed = 302, IPC_CompositorInitFailed = 303, IPC_MutexInitFailed = 304, IPC_Failed = 305, + IPC_CompositorConnectFailed = 306, + IPC_CompositorInvalidConnectResponse = 307, + IPC_ConnectFailedAfterMultipleAttempts = 308, Compositor_Failed = 400, Compositor_D3D11HardwareRequired = 401, Compositor_FirmwareRequiresUpdate = 402, + Compositor_OverlayInitFailed = 403, + Compositor_ScreenshotsInitFailed = 404, VendorSpecific_UnableToConnectToOculusRuntime = 1000, VendorSpecific_HmdFound_CantOpenDevice = 1101, VendorSpecific_HmdFound_UnableToRequestConfigStart = 1102, @@ -2840,6 +3565,47 @@ public enum EVRInitError VendorSpecific_HmdFound_ConfigFailedSanityCheck = 1113, Steam_SteamInstallationNotFound = 2000, } +public enum EVRScreenshotType +{ + None = 0, + Mono = 1, + Stereo = 2, + Cubemap = 3, + MonoPanorama = 4, + StereoPanorama = 5, +} +public enum EVRScreenshotPropertyFilenames +{ + Preview = 0, + VR = 1, +} +public enum EVRTrackedCameraError +{ + None = 0, + OperationFailed = 100, + InvalidHandle = 101, + InvalidFrameHeaderVersion = 102, + OutOfHandles = 103, + IPCFailure = 104, + NotSupportedForThisDevice = 105, + SharedMemoryFailure = 106, + FrameBufferingFailure = 107, + StreamSetupFailure = 108, + InvalidGLTextureId = 109, + InvalidSharedTextureHandle = 110, + FailedToGetGLTextureId = 111, + SharedTextureFailure = 112, + NoFrameAvailable = 113, + InvalidArgument = 114, + InvalidFrameBufferSize = 115, +} +public enum EVRTrackedCameraFrameType +{ + Distorted = 0, + Undistorted = 1, + MaximumUndistorted = 2, + MAX_CAMERA_FRAME_TYPES = 3, +} public enum EVRApplicationError { None = 0, @@ -2878,6 +3644,7 @@ public enum EVRApplicationProperty IsDashboardOverlay_Bool = 60, IsTemplate_Bool = 61, IsInstanced_Bool = 62, + IsInternal_Bool = 63, LastLaunchTime_Uint64 = 70, } public enum EVRApplicationTransitionState @@ -2895,7 +3662,7 @@ public enum ChaperoneCalibrationState Warning_BaseStationRemoved = 102, Warning_SeatedBoundsInvalid = 103, Error = 200, - Error_BaseStationUninitalized = 201, + Error_BaseStationUninitialized = 201, Error_BaseStationConflict = 202, Error_PlayAreaInvalid = 203, Error_CollisionBoundsInvalid = 204, @@ -2912,6 +3679,7 @@ public enum EChaperoneImportFlags public enum EVRCompositorError { None = 0, + RequestFailed = 1, IncompatibleVersion = 100, DoNotHaveFocus = 101, InvalidTexture = 102, @@ -2920,6 +3688,7 @@ public enum EVRCompositorError TextureUsesUnsupportedFormat = 105, SharedTexturesNotSupported = 106, IndexOutOfRange = 107, + AlreadySubmitted = 108, } public enum VROverlayInputMethod { @@ -2945,6 +3714,22 @@ public enum VROverlayFlags SendVRTouchpadEvents = 7, ShowTouchPadScrollWheel = 8, TransferOwnershipToInternalProcess = 9, + SideBySide_Parallel = 10, + SideBySide_Crossed = 11, + Panorama = 12, + StereoPanorama = 13, + SortWithNonSceneOverlays = 14, + VisibleInDashboard = 15, +} +public enum VRMessageOverlayResponse +{ + ButtonPress_0 = 0, + ButtonPress_1 = 1, + ButtonPress_2 = 2, + ButtonPress_3 = 3, + CouldntFindSystemOverlay = 4, + CouldntFindOrCreateClientOverlay = 5, + ApplicationQuit = 6, } public enum EGamepadTextInputMode { @@ -2965,6 +3750,11 @@ public enum EOverlayDirection Right = 3, Count = 4, } +public enum EVROverlayIntersectionMaskPrimitiveType +{ + OverlayIntersectionPrimitiveType_Rectangle = 0, + OverlayIntersectionPrimitiveType_Circle = 1, +} public enum EVRRenderModelError { None = 0, @@ -2974,8 +3764,11 @@ public enum EVRRenderModelError InvalidModel = 301, NoShapes = 302, MultipleShapes = 303, - TooManyIndices = 304, + TooManyVertices = 304, MultipleTextures = 305, + BufferTooSmall = 306, + NotEnoughNormals = 307, + NotEnoughTexCoords = 308, InvalidTexture = 400, } public enum EVRComponentProperty @@ -2990,6 +3783,7 @@ public enum EVRNotificationType { Transient = 0, Persistent = 1, + Transient_SystemWithUserValue = 2, } public enum EVRNotificationStyle { @@ -3005,6 +3799,17 @@ public enum EVRSettingsError IPCFailed = 1, WriteFailed = 2, ReadFailed = 3, + JsonParseFailed = 4, + UnsetSettingHasNoDefault = 5, +} +public enum EVRScreenshotError +{ + None = 0, + RequestFailed = 1, + IncompatibleVersion = 100, + NotFound = 101, + BufferTooSmall = 102, + ScreenshotAlreadyInProgress = 108, } [StructLayout(LayoutKind.Explicit)] public struct VREvent_Data_t @@ -3022,9 +3827,21 @@ public enum EVRSettingsError [FieldOffset(0)] public VREvent_PerformanceTest_t performanceTest; [FieldOffset(0)] public VREvent_TouchPadMove_t touchPadMove; [FieldOffset(0)] public VREvent_SeatedZeroPoseReset_t seatedZeroPoseReset; + [FieldOffset(0)] public VREvent_Screenshot_t screenshot; + [FieldOffset(0)] public VREvent_ScreenshotProgress_t screenshotProgress; + [FieldOffset(0)] public VREvent_ApplicationLaunch_t applicationLaunch; + [FieldOffset(0)] public VREvent_EditingCameraSurface_t cameraSurface; + [FieldOffset(0)] public VREvent_MessageOverlay_t messageOverlay; [FieldOffset(0)] public VREvent_Keyboard_t keyboard; // This has to be at the end due to a mono bug } + +[StructLayout(LayoutKind.Explicit)] public struct VROverlayIntersectionMaskPrimitive_Data_t +{ + [FieldOffset(0)] public IntersectionMaskRectangle_t m_Rectangle; + [FieldOffset(0)] public IntersectionMaskCircle_t m_Circle; +} + [StructLayout(LayoutKind.Sequential)] public struct HmdMatrix34_t { public float m0; //float[3][4] @@ -3121,7 +3938,7 @@ public enum EVRSettingsError [StructLayout(LayoutKind.Sequential)] public struct Texture_t { public IntPtr handle; // void * - public EGraphicsAPIConvention eType; + public ETextureType eType; public EColorSpace eColorSpace; } [StructLayout(LayoutKind.Sequential)] public struct TrackedDevicePose_t @@ -3142,6 +3959,25 @@ public enum EVRSettingsError public float uMax; public float vMax; } +[StructLayout(LayoutKind.Sequential)] public struct VRVulkanTextureData_t +{ + public ulong m_nImage; + public IntPtr m_pDevice; // struct VkDevice_T * + public IntPtr m_pPhysicalDevice; // struct VkPhysicalDevice_T * + public IntPtr m_pInstance; // struct VkInstance_T * + public IntPtr m_pQueue; // struct VkQueue_T * + public uint m_nQueueFamilyIndex; + public uint m_nWidth; + public uint m_nHeight; + public uint m_nFormat; + public uint m_nSampleCount; +} +[StructLayout(LayoutKind.Sequential)] public struct D3D12TextureData_t +{ + public IntPtr m_pResource; // struct ID3D12Resource * + public IntPtr m_pCommandQueue; // struct ID3D12CommandQueue * + public uint m_nNodeMask; +} [StructLayout(LayoutKind.Sequential)] public struct VREvent_Controller_t { public uint button; @@ -3216,6 +4052,34 @@ public enum EVRSettingsError [MarshalAs(UnmanagedType.I1)] public bool bResetBySystemMenu; } +[StructLayout(LayoutKind.Sequential)] public struct VREvent_Screenshot_t +{ + public uint handle; + public uint type; +} +[StructLayout(LayoutKind.Sequential)] public struct VREvent_ScreenshotProgress_t +{ + public float progress; +} +[StructLayout(LayoutKind.Sequential)] public struct VREvent_ApplicationLaunch_t +{ + public uint pid; + public uint unArgsHandle; +} +[StructLayout(LayoutKind.Sequential)] public struct VREvent_EditingCameraSurface_t +{ + public ulong overlayHandle; + public uint nVisualMode; +} +[StructLayout(LayoutKind.Sequential)] public struct VREvent_MessageOverlay_t +{ + public uint unVRMessageOverlayResponse; +} +[StructLayout(LayoutKind.Sequential)] public struct VREvent_Property_t +{ + public ulong container; + public ETrackedDeviceProperty prop; +} [StructLayout(LayoutKind.Sequential)] public struct VREvent_t { public uint eventType; @@ -3244,6 +4108,29 @@ public enum EVRSettingsError public VRControllerAxis_t rAxis3; public VRControllerAxis_t rAxis4; } +// This structure is for backwards binary compatibility on Linux and OSX only +[StructLayout(LayoutKind.Sequential, Pack = 4)] public struct VRControllerState_t_Packed +{ + public uint unPacketNum; + public ulong ulButtonPressed; + public ulong ulButtonTouched; + public VRControllerAxis_t rAxis0; //VRControllerAxis_t[5] + public VRControllerAxis_t rAxis1; + public VRControllerAxis_t rAxis2; + public VRControllerAxis_t rAxis3; + public VRControllerAxis_t rAxis4; + public void Unpack(ref VRControllerState_t unpacked) + { + unpacked.unPacketNum = this.unPacketNum; + unpacked.ulButtonPressed = this.ulButtonPressed; + unpacked.ulButtonTouched = this.ulButtonTouched; + unpacked.rAxis0 = this.rAxis0; + unpacked.rAxis1 = this.rAxis1; + unpacked.rAxis2 = this.rAxis2; + unpacked.rAxis3 = this.rAxis3; + unpacked.rAxis4 = this.rAxis4; + } +} [StructLayout(LayoutKind.Sequential)] public struct Compositor_OverlaySettings { public uint size; @@ -3263,6 +4150,15 @@ public enum EVRSettingsError public float gridScale; public HmdMatrix44_t transform; } +[StructLayout(LayoutKind.Sequential)] public struct CameraVideoStreamFrameHeader_t +{ + public EVRTrackedCameraFrameType eFrameType; + public uint nWidth; + public uint nHeight; + public uint nBytesPerPixel; + public uint nFrameSequence; + public TrackedDevicePose_t standingTrackedDevicePose; +} [StructLayout(LayoutKind.Sequential)] public struct AppOverrideKeys_t { public IntPtr pchKey; // const char * @@ -3273,9 +4169,12 @@ public enum EVRSettingsError public uint m_nSize; public uint m_nFrameIndex; public uint m_nNumFramePresents; + public uint m_nNumMisPresented; public uint m_nNumDroppedFrames; + public uint m_nReprojectionFlags; public double m_flSystemTimeInSeconds; - public float m_flSceneRenderGpuMs; + public float m_flPreSubmitGpuMs; + public float m_flPostSubmitGpuMs; public float m_flTotalRenderGpuMs; public float m_flCompositorRenderGpuMs; public float m_flCompositorRenderCpuMs; @@ -3291,8 +4190,24 @@ public enum EVRSettingsError public float m_flCompositorUpdateEndMs; public float m_flCompositorRenderStartMs; public TrackedDevicePose_t m_HmdPose; - public int m_nFidelityLevel; - public uint m_nReprojectionFlags; +} +[StructLayout(LayoutKind.Sequential)] public struct Compositor_CumulativeStats +{ + public uint m_nPid; + public uint m_nNumFramePresents; + public uint m_nNumDroppedFrames; + public uint m_nNumReprojectedFrames; + public uint m_nNumFramePresentsOnStartup; + public uint m_nNumDroppedFramesOnStartup; + public uint m_nNumReprojectedFramesOnStartup; + public uint m_nNumLoading; + public uint m_nNumFramePresentsLoading; + public uint m_nNumDroppedFramesLoading; + public uint m_nNumReprojectedFramesLoading; + public uint m_nNumTimedOut; + public uint m_nNumFramePresentsTimedOut; + public uint m_nNumDroppedFramesTimedOut; + public uint m_nNumReprojectedFramesTimedOut; } [StructLayout(LayoutKind.Sequential)] public struct VROverlayIntersectionParams_t { @@ -3307,6 +4222,24 @@ public enum EVRSettingsError public HmdVector2_t vUVs; public float fDistance; } +[StructLayout(LayoutKind.Sequential)] public struct IntersectionMaskRectangle_t +{ + public float m_flTopLeftX; + public float m_flTopLeftY; + public float m_flWidth; + public float m_flHeight; +} +[StructLayout(LayoutKind.Sequential)] public struct IntersectionMaskCircle_t +{ + public float m_flCenterX; + public float m_flCenterY; + public float m_flRadius; +} +[StructLayout(LayoutKind.Sequential)] public struct VROverlayIntersectionMaskPrimitive_t +{ + public EVROverlayIntersectionMaskPrimitiveType m_nPrimitiveType; + public VROverlayIntersectionMaskPrimitive_Data_t m_Primitive; +} [StructLayout(LayoutKind.Sequential)] public struct RenderModel_ComponentState_t { public HmdMatrix34_t mTrackingToComponentRenderModel; @@ -3326,6 +4259,19 @@ public enum EVRSettingsError public char unHeight; public IntPtr rubTextureMapData; // const uint8_t * } +// This structure is for backwards binary compatibility on Linux and OSX only +[StructLayout(LayoutKind.Sequential, Pack = 4)] public struct RenderModel_TextureMap_t_Packed +{ + public char unWidth; + public char unHeight; + public IntPtr rubTextureMapData; // const uint8_t * + public void Unpack(ref RenderModel_TextureMap_t unpacked) + { + unpacked.unWidth = this.unWidth; + unpacked.unHeight = this.unHeight; + unpacked.rubTextureMapData = this.rubTextureMapData; + } +} [StructLayout(LayoutKind.Sequential)] public struct RenderModel_t { public IntPtr rVertexData; // const struct vr::RenderModel_Vertex_t * @@ -3334,6 +4280,23 @@ public enum EVRSettingsError public uint unTriangleCount; public int diffuseTextureId; } +// This structure is for backwards binary compatibility on Linux and OSX only +[StructLayout(LayoutKind.Sequential, Pack = 4)] public struct RenderModel_t_Packed +{ + public IntPtr rVertexData; // const struct vr::RenderModel_Vertex_t * + public uint unVertexCount; + public IntPtr rIndexData; // const uint16_t * + public uint unTriangleCount; + public int diffuseTextureId; + public void Unpack(ref RenderModel_t unpacked) + { + unpacked.rVertexData = this.rVertexData; + unpacked.unVertexCount = this.unVertexCount; + unpacked.rIndexData = this.rIndexData; + unpacked.unTriangleCount = this.unTriangleCount; + unpacked.diffuseTextureId = this.diffuseTextureId; + } +} [StructLayout(LayoutKind.Sequential)] public struct RenderModel_ControllerMode_State_t { [MarshalAs(UnmanagedType.I1)] @@ -3341,10 +4304,10 @@ public enum EVRSettingsError } [StructLayout(LayoutKind.Sequential)] public struct NotificationBitmap_t { - public IntPtr bytes; // void * - public int width; - public int height; - public int depth; + public IntPtr m_pImageData; // void * + public int m_nWidth; + public int m_nHeight; + public int m_nBytesPerPixel; } [StructLayout(LayoutKind.Sequential)] public struct COpenVRContext { @@ -3353,10 +4316,13 @@ public enum EVRSettingsError public IntPtr m_pVRChaperoneSetup; // class vr::IVRChaperoneSetup * public IntPtr m_pVRCompositor; // class vr::IVRCompositor * public IntPtr m_pVROverlay; // class vr::IVROverlay * + public IntPtr m_pVRResources; // class vr::IVRResources * public IntPtr m_pVRRenderModels; // class vr::IVRRenderModels * public IntPtr m_pVRExtendedDisplay; // class vr::IVRExtendedDisplay * public IntPtr m_pVRSettings; // class vr::IVRSettings * public IntPtr m_pVRApplications; // class vr::IVRApplications * + public IntPtr m_pVRTrackedCamera; // class vr::IVRTrackedCamera * + public IntPtr m_pVRScreenshots; // class vr::IVRScreenshots * } public class OpenVR @@ -3402,25 +4368,44 @@ public static uint GetInitToken() return OpenVRInterop.GetInitToken(); } - public const uint k_unTrackingStringSize = 32; public const uint k_unMaxDriverDebugResponseSize = 32768; public const uint k_unTrackedDeviceIndex_Hmd = 0; public const uint k_unMaxTrackedDeviceCount = 16; + public const uint k_unTrackedDeviceIndexOther = 4294967294; public const uint k_unTrackedDeviceIndexInvalid = 4294967295; + public const ulong k_ulInvalidPropertyContainer = 0; + public const uint k_unInvalidPropertyTag = 0; + public const uint k_unFloatPropertyTag = 1; + public const uint k_unInt32PropertyTag = 2; + public const uint k_unUint64PropertyTag = 3; + public const uint k_unBoolPropertyTag = 4; + public const uint k_unStringPropertyTag = 5; + public const uint k_unHmdMatrix34PropertyTag = 20; + public const uint k_unHmdMatrix44PropertyTag = 21; + public const uint k_unHmdVector3PropertyTag = 22; + public const uint k_unHmdVector4PropertyTag = 23; + public const uint k_unHiddenAreaPropertyTag = 30; + public const uint k_unOpenVRInternalReserved_Start = 1000; + public const uint k_unOpenVRInternalReserved_End = 10000; public const uint k_unMaxPropertyStringSize = 32768; public const uint k_unControllerStateAxisCount = 5; public const ulong k_ulOverlayHandleInvalid = 0; - public const string IVRSystem_Version = "IVRSystem_012"; + public const uint k_unScreenshotHandleInvalid = 0; + public const string IVRSystem_Version = "IVRSystem_015"; public const string IVRExtendedDisplay_Version = "IVRExtendedDisplay_001"; + public const string IVRTrackedCamera_Version = "IVRTrackedCamera_003"; public const uint k_unMaxApplicationKeyLength = 128; - public const string IVRApplications_Version = "IVRApplications_005"; + public const string k_pch_MimeType_HomeApp = "vr/home"; + public const string k_pch_MimeType_GameTheater = "vr/game_theater"; + public const string IVRApplications_Version = "IVRApplications_006"; public const string IVRChaperone_Version = "IVRChaperone_003"; public const string IVRChaperoneSetup_Version = "IVRChaperoneSetup_005"; - public const string IVRCompositor_Version = "IVRCompositor_014"; + public const string IVRCompositor_Version = "IVRCompositor_020"; public const uint k_unVROverlayMaxKeyLength = 128; public const uint k_unVROverlayMaxNameLength = 128; - public const uint k_unMaxOverlayCount = 32; - public const string IVROverlay_Version = "IVROverlay_011"; + public const uint k_unMaxOverlayCount = 64; + public const uint k_unMaxOverlayIntersectionMaskPrimitivesCount = 32; + public const string IVROverlay_Version = "IVROverlay_014"; public const string k_pch_Controller_Component_GDC2015 = "gdc2015"; public const string k_pch_Controller_Component_Base = "base"; public const string k_pch_Controller_Component_Tip = "tip"; @@ -3430,7 +4415,7 @@ public static uint GetInitToken() public const uint k_unNotificationTextMaxSize = 256; public const string IVRNotifications_Version = "IVRNotifications_002"; public const uint k_unMaxSettingsKeyLength = 128; - public const string IVRSettings_Version = "IVRSettings_001"; + public const string IVRSettings_Version = "IVRSettings_002"; public const string k_pch_SteamVR_Section = "steamvr"; public const string k_pch_SteamVR_RequireHmd_String = "requireHmd"; public const string k_pch_SteamVR_ForcedDriverKey_String = "forcedDriver"; @@ -3444,12 +4429,13 @@ public static uint GetInitToken() public const string k_pch_SteamVR_LogLevel_Int32 = "loglevel"; public const string k_pch_SteamVR_IPD_Float = "ipd"; public const string k_pch_SteamVR_Background_String = "background"; + public const string k_pch_SteamVR_BackgroundUseDomeProjection_Bool = "backgroundUseDomeProjection"; + public const string k_pch_SteamVR_BackgroundCameraHeight_Float = "backgroundCameraHeight"; + public const string k_pch_SteamVR_BackgroundDomeRadius_Float = "backgroundDomeRadius"; public const string k_pch_SteamVR_GridColor_String = "gridColor"; public const string k_pch_SteamVR_PlayAreaColor_String = "playAreaColor"; + public const string k_pch_SteamVR_ShowStage_Bool = "showStage"; public const string k_pch_SteamVR_ActivateMultipleDrivers_Bool = "activateMultipleDrivers"; - public const string k_pch_SteamVR_PowerOffOnExit_Bool = "powerOffOnExit"; - public const string k_pch_SteamVR_StandbyAppRunningTimeout_Float = "standbyAppRunningTimeout"; - public const string k_pch_SteamVR_StandbyNoAppTimeout_Float = "standbyNoAppTimeout"; public const string k_pch_SteamVR_DirectMode_Bool = "directMode"; public const string k_pch_SteamVR_DirectModeEdidVid_Int32 = "directModeEdidVid"; public const string k_pch_SteamVR_DirectModeEdidPid_Int32 = "directModeEdidPid"; @@ -3458,22 +4444,29 @@ public static uint GetInitToken() public const string k_pch_SteamVR_BaseStationPowerManagement_Bool = "basestationPowerManagement"; public const string k_pch_SteamVR_NeverKillProcesses_Bool = "neverKillProcesses"; public const string k_pch_SteamVR_RenderTargetMultiplier_Float = "renderTargetMultiplier"; - public const string k_pch_SteamVR_AllowReprojection_Bool = "allowReprojection"; + public const string k_pch_SteamVR_AllowAsyncReprojection_Bool = "allowAsyncReprojection"; + public const string k_pch_SteamVR_AllowReprojection_Bool = "allowInterleavedReprojection"; + public const string k_pch_SteamVR_ForceReprojection_Bool = "forceReprojection"; + public const string k_pch_SteamVR_ForceFadeOnBadTracking_Bool = "forceFadeOnBadTracking"; + public const string k_pch_SteamVR_DefaultMirrorView_Int32 = "defaultMirrorView"; + public const string k_pch_SteamVR_ShowMirrorView_Bool = "showMirrorView"; + public const string k_pch_SteamVR_MirrorViewGeometry_String = "mirrorViewGeometry"; + public const string k_pch_SteamVR_StartMonitorFromAppLaunch = "startMonitorFromAppLaunch"; + public const string k_pch_SteamVR_StartCompositorFromAppLaunch_Bool = "startCompositorFromAppLaunch"; + public const string k_pch_SteamVR_StartDashboardFromAppLaunch_Bool = "startDashboardFromAppLaunch"; + public const string k_pch_SteamVR_StartOverlayAppsFromDashboard_Bool = "startOverlayAppsFromDashboard"; + public const string k_pch_SteamVR_EnableHomeApp = "enableHomeApp"; + public const string k_pch_SteamVR_SetInitialDefaultHomeApp = "setInitialDefaultHomeApp"; + public const string k_pch_SteamVR_CycleBackgroundImageTimeSec_Int32 = "CycleBackgroundImageTimeSec"; + public const string k_pch_SteamVR_RetailDemo_Bool = "retailDemo"; + public const string k_pch_SteamVR_IpdOffset_Float = "ipdOffset"; public const string k_pch_Lighthouse_Section = "driver_lighthouse"; public const string k_pch_Lighthouse_DisableIMU_Bool = "disableimu"; public const string k_pch_Lighthouse_UseDisambiguation_String = "usedisambiguation"; public const string k_pch_Lighthouse_DisambiguationDebug_Int32 = "disambiguationdebug"; public const string k_pch_Lighthouse_PrimaryBasestation_Int32 = "primarybasestation"; - public const string k_pch_Lighthouse_LighthouseName_String = "lighthousename"; - public const string k_pch_Lighthouse_MaxIncidenceAngleDegrees_Float = "maxincidenceangledegrees"; - public const string k_pch_Lighthouse_UseLighthouseDirect_Bool = "uselighthousedirect"; public const string k_pch_Lighthouse_DBHistory_Bool = "dbhistory"; - public const string k_pch_Lighthouse_OriginOffsetX_Float = "originoffsetx"; - public const string k_pch_Lighthouse_OriginOffsetY_Float = "originoffsety"; - public const string k_pch_Lighthouse_OriginOffsetZ_Float = "originoffsetz"; - public const string k_pch_Lighthouse_HeadingOffset_Float = "headingoffset"; public const string k_pch_Null_Section = "driver_null"; - public const string k_pch_Null_EnableNullDriver_Bool = "enable"; public const string k_pch_Null_SerialNumber_String = "serialNumber"; public const string k_pch_Null_ModelNumber_String = "modelNumber"; public const string k_pch_Null_WindowX_Int32 = "windowX"; @@ -3486,6 +4479,9 @@ public static uint GetInitToken() public const string k_pch_Null_DisplayFrequency_Float = "displayFrequency"; public const string k_pch_UserInterface_Section = "userinterface"; public const string k_pch_UserInterface_StatusAlwaysOnTop_Bool = "StatusAlwaysOnTop"; + public const string k_pch_UserInterface_MinimizeToTray_Bool = "MinimizeToTray"; + public const string k_pch_UserInterface_Screenshots_Bool = "screenshots"; + public const string k_pch_UserInterface_ScreenshotType_Int = "screenshotType"; public const string k_pch_Notifications_Section = "notifications"; public const string k_pch_Notifications_DoNotDisturb_Bool = "DoNotDisturb"; public const string k_pch_Keyboard_Section = "keyboard"; @@ -3522,6 +4518,7 @@ public static uint GetInitToken() public const string k_pch_Camera_BoundsColorGammaG_Int32 = "cameraBoundsColorGammaG"; public const string k_pch_Camera_BoundsColorGammaB_Int32 = "cameraBoundsColorGammaB"; public const string k_pch_Camera_BoundsColorGammaA_Int32 = "cameraBoundsColorGammaA"; + public const string k_pch_Camera_BoundsStrength_Int32 = "cameraBoundsStrength"; public const string k_pch_audio_Section = "audio"; public const string k_pch_audio_OnPlaybackDevice_String = "onPlaybackDevice"; public const string k_pch_audio_OnRecordDevice_String = "onRecordDevice"; @@ -3529,6 +4526,19 @@ public static uint GetInitToken() public const string k_pch_audio_OffPlaybackDevice_String = "offPlaybackDevice"; public const string k_pch_audio_OffRecordDevice_String = "offRecordDevice"; public const string k_pch_audio_VIVEHDMIGain = "viveHDMIGain"; + public const string k_pch_Power_Section = "power"; + public const string k_pch_Power_PowerOffOnExit_Bool = "powerOffOnExit"; + public const string k_pch_Power_TurnOffScreensTimeout_Float = "turnOffScreensTimeout"; + public const string k_pch_Power_TurnOffControllersTimeout_Float = "turnOffControllersTimeout"; + public const string k_pch_Power_ReturnToWatchdogTimeout_Float = "returnToWatchdogTimeout"; + public const string k_pch_Power_AutoLaunchSteamVROnButtonPress = "autoLaunchSteamVROnButtonPress"; + public const string k_pch_Dashboard_Section = "dashboard"; + public const string k_pch_Dashboard_EnableDashboard_Bool = "enableDashboard"; + public const string k_pch_Dashboard_ArcadeMode_Bool = "arcadeMode"; + public const string k_pch_modelskin_Section = "modelskins"; + public const string k_pch_Driver_Enable_Bool = "enable"; + public const string IVRScreenshots_Version = "IVRScreenshots_001"; + public const string IVRResources_Version = "IVRResources_001"; static uint VRToken { get; set; } @@ -3549,6 +4559,8 @@ public void Clear() m_pVRExtendedDisplay = null; m_pVRSettings = null; m_pVRApplications = null; + m_pVRScreenshots = null; + m_pVRTrackedCamera = null; } void CheckClear() @@ -3677,6 +4689,32 @@ public CVRApplications VRApplications() return m_pVRApplications; } + public CVRScreenshots VRScreenshots() + { + CheckClear(); + if (m_pVRScreenshots == null) + { + var eError = EVRInitError.None; + var pInterface = OpenVRInterop.GetGenericInterface(FnTable_Prefix+IVRScreenshots_Version, ref eError); + if (pInterface != IntPtr.Zero && eError == EVRInitError.None) + m_pVRScreenshots = new CVRScreenshots(pInterface); + } + return m_pVRScreenshots; + } + + public CVRTrackedCamera VRTrackedCamera() + { + CheckClear(); + if (m_pVRTrackedCamera == null) + { + var eError = EVRInitError.None; + var pInterface = OpenVRInterop.GetGenericInterface(FnTable_Prefix+IVRTrackedCamera_Version, ref eError); + if (pInterface != IntPtr.Zero && eError == EVRInitError.None) + m_pVRTrackedCamera = new CVRTrackedCamera(pInterface); + } + return m_pVRTrackedCamera; + } + private CVRSystem m_pVRSystem; private CVRChaperone m_pVRChaperone; private CVRChaperoneSetup m_pVRChaperoneSetup; @@ -3686,6 +4724,8 @@ public CVRApplications VRApplications() private CVRExtendedDisplay m_pVRExtendedDisplay; private CVRSettings m_pVRSettings; private CVRApplications m_pVRApplications; + private CVRScreenshots m_pVRScreenshots; + private CVRTrackedCamera m_pVRTrackedCamera; }; private static COpenVRContext _OpenVRInternal_ModuleContext = null; @@ -3705,9 +4745,11 @@ static COpenVRContext OpenVRInternal_ModuleContext public static CVRCompositor Compositor { get { return OpenVRInternal_ModuleContext.VRCompositor(); } } public static CVROverlay Overlay { get { return OpenVRInternal_ModuleContext.VROverlay(); } } public static CVRRenderModels RenderModels { get { return OpenVRInternal_ModuleContext.VRRenderModels(); } } - public static CVRApplications Applications { get { return OpenVRInternal_ModuleContext.VRApplications(); } } - public static CVRSettings Settings { get { return OpenVRInternal_ModuleContext.VRSettings(); } } public static CVRExtendedDisplay ExtendedDisplay { get { return OpenVRInternal_ModuleContext.VRExtendedDisplay(); } } + public static CVRSettings Settings { get { return OpenVRInternal_ModuleContext.VRSettings(); } } + public static CVRApplications Applications { get { return OpenVRInternal_ModuleContext.VRApplications(); } } + public static CVRScreenshots Screenshots { get { return OpenVRInternal_ModuleContext.VRScreenshots(); } } + public static CVRTrackedCamera TrackedCamera { get { return OpenVRInternal_ModuleContext.VRTrackedCamera(); } } /** Finds the active installation of vrclient.dll and initializes it */ public static CVRSystem Init(ref EVRInitError peError, EVRApplicationType eApplicationType = EVRApplicationType.VRApplication_Scene) From 9e551cc6fe7fcf0dc3d13ddd6781f460b1c8f570 Mon Sep 17 00:00:00 2001 From: Patrick Mahoney Date: Thu, 1 Jun 2017 22:22:28 -0400 Subject: [PATCH 4/9] More updates for the steamVr unity asset. ' --- Assets/SteamVR/Editor/SteamVR_Editor.cs | 6 +- Assets/SteamVR/Editor/SteamVR_Settings.cs | 217 ++++++++++++---------- Assets/SteamVR/Editor/SteamVR_Update.cs | 16 +- 3 files changed, 125 insertions(+), 114 deletions(-) diff --git a/Assets/SteamVR/Editor/SteamVR_Editor.cs b/Assets/SteamVR/Editor/SteamVR_Editor.cs index f347231..7a1061f 100644 --- a/Assets/SteamVR/Editor/SteamVR_Editor.cs +++ b/Assets/SteamVR/Editor/SteamVR_Editor.cs @@ -27,11 +27,9 @@ string GetResourcePath() void OnEnable() { var resourcePath = GetResourcePath(); -#if UNITY_5_0 - logo = Resources.LoadAssetAtPath(resourcePath + "logo.png"); -#else + logo = AssetDatabase.LoadAssetAtPath(resourcePath + "logo.png"); -#endif + script = serializedObject.FindProperty("m_Script"); wireframe = serializedObject.FindProperty("wireframe"); diff --git a/Assets/SteamVR/Editor/SteamVR_Settings.cs b/Assets/SteamVR/Editor/SteamVR_Settings.cs index ef4278b..83020e2 100644 --- a/Assets/SteamVR/Editor/SteamVR_Settings.cs +++ b/Assets/SteamVR/Editor/SteamVR_Settings.cs @@ -1,4 +1,4 @@ -//========= Copyright 2015, Valve Corporation, All rights reserved. =========== +//======= Copyright (c) Valve Corporation, All rights reserved. =============== // // Purpose: Prompt developers to use settings most compatible with SteamVR. // @@ -26,20 +26,15 @@ public class SteamVR_Settings : EditorWindow const string resizableWindow = "Resizable Window"; const string fullscreenMode = "D3D11 Fullscreen Mode"; const string visibleInBackground = "Visible In Background"; +#if (UNITY_5_4 || UNITY_5_3 || UNITY_5_2 || UNITY_5_1 || UNITY_5_0) const string renderingPath = "Rendering Path"; +#endif const string colorSpace = "Color Space"; -#if !(UNITY_5_3 || UNITY_5_2 || UNITY_5_1 || UNITY_5_0) const string gpuSkinning = "GPU Skinning"; -#endif -#if !(UNITY_5_3 || UNITY_5_2 || UNITY_5_1 || UNITY_5_0) && false // skyboxes are currently broken +#if false // skyboxes are currently broken const string singlePassStereoRendering = "Single-Pass Stereo Rendering"; #endif -#if (UNITY_5_3 || UNITY_5_2 || UNITY_5_1 || UNITY_5_0) - const string stereoscopicRendering = "Stereoscopic Rendering"; -#endif -#if (UNITY_5_3 || UNITY_5_2 || UNITY_5_1) - const string virtualRealitySupported = "Virtual Reality Support"; -#endif + const BuildTarget recommended_BuildTarget = BuildTarget.StandaloneWindows64; const bool recommended_ShowUnitySplashScreen = false; const bool recommended_DefaultIsFullScreen = false; @@ -50,20 +45,15 @@ public class SteamVR_Settings : EditorWindow const bool recommended_ResizableWindow = true; const D3D11FullscreenMode recommended_FullscreenMode = D3D11FullscreenMode.FullscreenWindow; const bool recommended_VisibleInBackground = true; +#if (UNITY_5_4 || UNITY_5_3 || UNITY_5_2 || UNITY_5_1 || UNITY_5_0) const RenderingPath recommended_RenderPath = RenderingPath.Forward; +#endif const ColorSpace recommended_ColorSpace = ColorSpace.Linear; -#if !(UNITY_5_3 || UNITY_5_2 || UNITY_5_1 || UNITY_5_0) const bool recommended_GpuSkinning = true; -#endif -#if !(UNITY_5_3 || UNITY_5_2 || UNITY_5_1 || UNITY_5_0) && false +#if false const bool recommended_SinglePassStereoRendering = true; #endif -#if (UNITY_5_3 || UNITY_5_2 || UNITY_5_1 || UNITY_5_0) - const bool recommended_StereoscopicRendering = false; -#endif -#if (UNITY_5_3 || UNITY_5_2 || UNITY_5_1) - const bool recommended_VirtualRealitySupported = false; -#endif + static SteamVR_Settings window; static SteamVR_Settings() @@ -77,7 +67,11 @@ static void Update() (!EditorPrefs.HasKey(ignore + buildTarget) && EditorUserBuildSettings.activeBuildTarget != recommended_BuildTarget) || (!EditorPrefs.HasKey(ignore + showUnitySplashScreen) && +#if (UNITY_5_4 || UNITY_5_3 || UNITY_5_2 || UNITY_5_1 || UNITY_5_0) PlayerSettings.showUnitySplashScreen != recommended_ShowUnitySplashScreen) || +#else + PlayerSettings.SplashScreen.show != recommended_ShowUnitySplashScreen) || +#endif (!EditorPrefs.HasKey(ignore + defaultIsFullScreen) && PlayerSettings.defaultIsFullScreen != recommended_DefaultIsFullScreen) || (!EditorPrefs.HasKey(ignore + defaultScreenSize) && @@ -93,25 +87,17 @@ static void Update() PlayerSettings.d3d11FullscreenMode != recommended_FullscreenMode) || (!EditorPrefs.HasKey(ignore + visibleInBackground) && PlayerSettings.visibleInBackground != recommended_VisibleInBackground) || +#if (UNITY_5_4 || UNITY_5_3 || UNITY_5_2 || UNITY_5_1 || UNITY_5_0) (!EditorPrefs.HasKey(ignore + renderingPath) && PlayerSettings.renderingPath != recommended_RenderPath) || +#endif (!EditorPrefs.HasKey(ignore + colorSpace) && PlayerSettings.colorSpace != recommended_ColorSpace) || -#if !(UNITY_5_3 || UNITY_5_2 || UNITY_5_1 || UNITY_5_0) (!EditorPrefs.HasKey(ignore + gpuSkinning) && PlayerSettings.gpuSkinning != recommended_GpuSkinning) || -#endif -#if !(UNITY_5_3 || UNITY_5_2 || UNITY_5_1 || UNITY_5_0) && false +#if false (!EditorPrefs.HasKey(ignore + singlePassStereoRendering) && PlayerSettings.singlePassStereoRendering != recommended_SinglePassStereoRendering) || -#endif -#if (UNITY_5_3 || UNITY_5_2 || UNITY_5_1 || UNITY_5_0) - (!EditorPrefs.HasKey(ignore + stereoscopicRendering) && - PlayerSettings.stereoscopic3D != recommended_StereoscopicRendering) || -#endif -#if (UNITY_5_3 || UNITY_5_2 || UNITY_5_1) - (!EditorPrefs.HasKey(ignore + virtualRealitySupported) && - PlayerSettings.virtualRealitySupported != recommended_VirtualRealitySupported) || #endif forceShow; @@ -122,42 +108,53 @@ static void Update() //window.title = "SteamVR"; } -#if !(UNITY_5_3 || UNITY_5_2 || UNITY_5_1 || UNITY_5_0) - // Switch to native OpenVR support. - var updated = false; - - if (!PlayerSettings.virtualRealitySupported) + if (SteamVR_Preferences.AutoEnableVR) { - PlayerSettings.virtualRealitySupported = true; - updated = true; - } - - var devices = UnityEditorInternal.VR.VREditor.GetVREnabledDevices(BuildTargetGroup.Standalone); - var hasOpenVR = false; - foreach (var device in devices) - if (device.ToLower() == "openvr") - hasOpenVR = true; + // Switch to native OpenVR support. + var updated = false; - if (!hasOpenVR) - { - string[] newDevices; - if (updated) + if (!PlayerSettings.virtualRealitySupported) { - newDevices = new string[] { "OpenVR" }; + PlayerSettings.virtualRealitySupported = true; + updated = true; } - else + +#if (UNITY_5_4 || UNITY_5_3 || UNITY_5_2 || UNITY_5_1 || UNITY_5_0) + var devices = UnityEditorInternal.VR.VREditor.GetVREnabledDevices(BuildTargetGroup.Standalone); +#else + var devices = UnityEditorInternal.VR.VREditor.GetVREnabledDevicesOnTargetGroup(BuildTargetGroup.Standalone); +#endif + var hasOpenVR = false; + foreach (var device in devices) + if (device.ToLower() == "openvr") + hasOpenVR = true; + + + if (!hasOpenVR) { - newDevices = new string[devices.Length + 1]; - for (int i = 0; i < devices.Length; i++) - newDevices[i] = devices[i]; - newDevices[devices.Length] = "OpenVR"; - updated = true; + string[] newDevices; + if (updated) + { + newDevices = new string[] { "OpenVR" }; + } + else + { + newDevices = new string[devices.Length + 1]; + for (int i = 0; i < devices.Length; i++) + newDevices[i] = devices[i]; + newDevices[devices.Length] = "OpenVR"; + updated = true; + } +#if (UNITY_5_4 || UNITY_5_3 || UNITY_5_2 || UNITY_5_1 || UNITY_5_0) + UnityEditorInternal.VR.VREditor.SetVREnabledDevices(BuildTargetGroup.Standalone, newDevices); +#else + UnityEditorInternal.VR.VREditor.SetVREnabledDevicesOnTargetGroup(BuildTargetGroup.Standalone, newDevices); +#endif } - UnityEditorInternal.VR.VREditor.SetVREnabledDevices(BuildTargetGroup.Standalone, newDevices); - } - if (updated) - Debug.Log("Switching to native OpenVR support."); + if (updated) + Debug.Log("Switching to native OpenVR support."); + } var dlls = new string[] { @@ -177,13 +174,12 @@ static void Update() Debug.Log(path + " in use; cannot delete. Please restart Unity to complete upgrade."); } } -#endif + EditorApplication.update -= Update; } Vector2 scrollPosition; - bool toggleState; - + string GetResourcePath() { var ms = MonoScript.FromScriptableObject(this); @@ -195,11 +191,7 @@ string GetResourcePath() public void OnGUI() { var resourcePath = GetResourcePath(); -#if !(UNITY_5_0) var logo = AssetDatabase.LoadAssetAtPath(resourcePath + "logo.png"); -#else - var logo = Resources.LoadAssetAtPath(resourcePath + "logo.png"); -#endif var rect = GUILayoutUtility.GetRect(position.width, 150, GUI.skin.box); if (logo) GUI.DrawTexture(rect, logo, ScaleMode.ScaleToFit); @@ -221,7 +213,11 @@ public void OnGUI() if (GUILayout.Button(string.Format(useRecommended, recommended_BuildTarget))) { +#if (UNITY_5_5 || UNITY_5_4 || UNITY_5_3 || UNITY_5_2 || UNITY_5_1 || UNITY_5_0) EditorUserBuildSettings.SwitchActiveBuildTarget(recommended_BuildTarget); +#else + EditorUserBuildSettings.SwitchActiveBuildTarget(BuildTargetGroup.Standalone, recommended_BuildTarget); +#endif } GUILayout.FlexibleSpace(); @@ -234,6 +230,7 @@ public void OnGUI() GUILayout.EndHorizontal(); } +#if (UNITY_5_4 || UNITY_5_3 || UNITY_5_2 || UNITY_5_1 || UNITY_5_0) if (!EditorPrefs.HasKey(ignore + showUnitySplashScreen) && PlayerSettings.showUnitySplashScreen != recommended_ShowUnitySplashScreen) { @@ -257,7 +254,31 @@ public void OnGUI() GUILayout.EndHorizontal(); } +#else + if (!EditorPrefs.HasKey(ignore + showUnitySplashScreen) && + PlayerSettings.SplashScreen.show != recommended_ShowUnitySplashScreen) + { + ++numItems; + + GUILayout.Label(showUnitySplashScreen + string.Format(currentValue, PlayerSettings.SplashScreen.show)); + + GUILayout.BeginHorizontal(); + + if (GUILayout.Button(string.Format(useRecommended, recommended_ShowUnitySplashScreen))) + { + PlayerSettings.SplashScreen.show = recommended_ShowUnitySplashScreen; + } + + GUILayout.FlexibleSpace(); + + if (GUILayout.Button("Ignore")) + { + EditorPrefs.SetBool(ignore + showUnitySplashScreen, true); + } + GUILayout.EndHorizontal(); + } +#endif if (!EditorPrefs.HasKey(ignore + defaultIsFullScreen) && PlayerSettings.defaultIsFullScreen != recommended_DefaultIsFullScreen) { @@ -427,7 +448,7 @@ public void OnGUI() GUILayout.EndHorizontal(); } - +#if (UNITY_5_4 || UNITY_5_3 || UNITY_5_2 || UNITY_5_1 || UNITY_5_0) if (!EditorPrefs.HasKey(ignore + renderingPath) && PlayerSettings.renderingPath != recommended_RenderPath) { @@ -451,7 +472,7 @@ public void OnGUI() GUILayout.EndHorizontal(); } - +#endif if (!EditorPrefs.HasKey(ignore + colorSpace) && PlayerSettings.colorSpace != recommended_ColorSpace) { @@ -475,7 +496,7 @@ public void OnGUI() GUILayout.EndHorizontal(); } -#if !(UNITY_5_3 || UNITY_5_2 || UNITY_5_1 || UNITY_5_0) + if (!EditorPrefs.HasKey(ignore + gpuSkinning) && PlayerSettings.gpuSkinning != recommended_GpuSkinning) { @@ -499,8 +520,8 @@ public void OnGUI() GUILayout.EndHorizontal(); } -#endif -#if !(UNITY_5_3 || UNITY_5_2 || UNITY_5_1 || UNITY_5_0) && false + +#if false if (!EditorPrefs.HasKey(ignore + singlePassStereoRendering) && PlayerSettings.singlePassStereoRendering != recommended_SinglePassStereoRendering) { @@ -590,19 +611,13 @@ public void OnGUI() EditorPrefs.DeleteKey(ignore + resizableWindow); EditorPrefs.DeleteKey(ignore + fullscreenMode); EditorPrefs.DeleteKey(ignore + visibleInBackground); +#if (UNITY_5_4 || UNITY_5_3 || UNITY_5_2 || UNITY_5_1 || UNITY_5_0) EditorPrefs.DeleteKey(ignore + renderingPath); +#endif EditorPrefs.DeleteKey(ignore + colorSpace); -#if !(UNITY_5_3 || UNITY_5_2 || UNITY_5_1 || UNITY_5_0) EditorPrefs.DeleteKey(ignore + gpuSkinning); -#endif -#if !(UNITY_5_3 || UNITY_5_2 || UNITY_5_1 || UNITY_5_0) && false +#if false EditorPrefs.DeleteKey(ignore + singlePassStereoRendering); -#endif -#if (UNITY_5_3 || UNITY_5_2 || UNITY_5_1 || UNITY_5_0) - EditorPrefs.DeleteKey(ignore + stereoscopicRendering); -#endif -#if (UNITY_5_3 || UNITY_5_2 || UNITY_5_1) - EditorPrefs.DeleteKey(ignore + virtualRealitySupported); #endif } @@ -620,9 +635,17 @@ public void OnGUI() { // Only set those that have not been explicitly ignored. if (!EditorPrefs.HasKey(ignore + buildTarget)) +#if (UNITY_5_5 || UNITY_5_4 || UNITY_5_3 || UNITY_5_2 || UNITY_5_1 || UNITY_5_0) EditorUserBuildSettings.SwitchActiveBuildTarget(recommended_BuildTarget); +#else + EditorUserBuildSettings.SwitchActiveBuildTarget(BuildTargetGroup.Standalone, recommended_BuildTarget); +#endif if (!EditorPrefs.HasKey(ignore + showUnitySplashScreen)) +#if (UNITY_5_4 || UNITY_5_3 || UNITY_5_2 || UNITY_5_1 || UNITY_5_0) PlayerSettings.showUnitySplashScreen = recommended_ShowUnitySplashScreen; +#else + PlayerSettings.SplashScreen.show = recommended_ShowUnitySplashScreen; +#endif if (!EditorPrefs.HasKey(ignore + defaultIsFullScreen)) PlayerSettings.defaultIsFullScreen = recommended_DefaultIsFullScreen; if (!EditorPrefs.HasKey(ignore + defaultScreenSize)) @@ -640,26 +663,19 @@ public void OnGUI() PlayerSettings.d3d11FullscreenMode = recommended_FullscreenMode; if (!EditorPrefs.HasKey(ignore + visibleInBackground)) PlayerSettings.visibleInBackground = recommended_VisibleInBackground; +#if (UNITY_5_4 || UNITY_5_3 || UNITY_5_2 || UNITY_5_1 || UNITY_5_0) if (!EditorPrefs.HasKey(ignore + renderingPath)) PlayerSettings.renderingPath = recommended_RenderPath; +#endif if (!EditorPrefs.HasKey(ignore + colorSpace)) PlayerSettings.colorSpace = recommended_ColorSpace; -#if !(UNITY_5_3 || UNITY_5_2 || UNITY_5_1 || UNITY_5_0) if (!EditorPrefs.HasKey(ignore + gpuSkinning)) PlayerSettings.gpuSkinning = recommended_GpuSkinning; -#endif -#if !(UNITY_5_3 || UNITY_5_2 || UNITY_5_1 || UNITY_5_0) && false +#if false if (!EditorPrefs.HasKey(ignore + singlePassStereoRendering)) PlayerSettings.singlePassStereoRendering = recommended_SinglePassStereoRendering; #endif -#if (UNITY_5_3 || UNITY_5_2 || UNITY_5_1 || UNITY_5_0) - if (!EditorPrefs.HasKey(ignore + stereoscopicRendering)) - PlayerSettings.stereoscopic3D = recommended_StereoscopicRendering; -#endif -#if (UNITY_5_3 || UNITY_5_2 || UNITY_5_1) - if (!EditorPrefs.HasKey(ignore + virtualRealitySupported)) - PlayerSettings.virtualRealitySupported = recommended_VirtualRealitySupported; -#endif + EditorUtility.DisplayDialog("Accept All", "You made the right choice!", "Ok"); Close(); @@ -672,7 +688,11 @@ public void OnGUI() // Only ignore those that do not currently match our recommended settings. if (EditorUserBuildSettings.activeBuildTarget != recommended_BuildTarget) EditorPrefs.SetBool(ignore + buildTarget, true); +#if (UNITY_5_4 || UNITY_5_3 || UNITY_5_2 || UNITY_5_1 || UNITY_5_0) if (PlayerSettings.showUnitySplashScreen != recommended_ShowUnitySplashScreen) +#else + if (PlayerSettings.SplashScreen.show != recommended_ShowUnitySplashScreen) +#endif EditorPrefs.SetBool(ignore + showUnitySplashScreen, true); if (PlayerSettings.defaultIsFullScreen != recommended_DefaultIsFullScreen) EditorPrefs.SetBool(ignore + defaultIsFullScreen, true); @@ -689,26 +709,19 @@ public void OnGUI() EditorPrefs.SetBool(ignore + fullscreenMode, true); if (PlayerSettings.visibleInBackground != recommended_VisibleInBackground) EditorPrefs.SetBool(ignore + visibleInBackground, true); +#if (UNITY_5_4 || UNITY_5_3 || UNITY_5_2 || UNITY_5_1 || UNITY_5_0) if (PlayerSettings.renderingPath != recommended_RenderPath) EditorPrefs.SetBool(ignore + renderingPath, true); +#endif if (PlayerSettings.colorSpace != recommended_ColorSpace) EditorPrefs.SetBool(ignore + colorSpace, true); -#if !(UNITY_5_3 || UNITY_5_2 || UNITY_5_1 || UNITY_5_0) if (PlayerSettings.gpuSkinning != recommended_GpuSkinning) EditorPrefs.SetBool(ignore + gpuSkinning, true); -#endif -#if !(UNITY_5_3 || UNITY_5_2 || UNITY_5_1 || UNITY_5_0) && false +#if false if (PlayerSettings.singlePassStereoRendering != recommended_SinglePassStereoRendering) EditorPrefs.SetBool(ignore + singlePassStereoRendering, true); #endif -#if (UNITY_5_3 || UNITY_5_2 || UNITY_5_1 || UNITY_5_0) - if (PlayerSettings.stereoscopic3D != recommended_StereoscopicRendering) - EditorPrefs.SetBool(ignore + stereoscopicRendering, true); -#endif -#if (UNITY_5_3 || UNITY_5_2 || UNITY_5_1) - if (PlayerSettings.virtualRealitySupported != recommended_VirtualRealitySupported) - EditorPrefs.SetBool(ignore + virtualRealitySupported, true); -#endif + Close(); } } diff --git a/Assets/SteamVR/Editor/SteamVR_Update.cs b/Assets/SteamVR/Editor/SteamVR_Update.cs index b41762a..792b1c9 100644 --- a/Assets/SteamVR/Editor/SteamVR_Update.cs +++ b/Assets/SteamVR/Editor/SteamVR_Update.cs @@ -1,4 +1,4 @@ -//========= Copyright 2015, Valve Corporation, All rights reserved. =========== +//======= Copyright (c) Valve Corporation, All rights reserved. =============== // // Purpose: Notify developers when a new version of the plugin is available. // @@ -12,26 +12,29 @@ [InitializeOnLoad] public class SteamVR_Update : EditorWindow { - const string currentVersion = "1.1.0"; + const string currentVersion = "1.2.1"; const string versionUrl = "http://media.steampowered.com/apps/steamvr/unitypluginversion.txt"; const string notesUrl = "http://media.steampowered.com/apps/steamvr/unityplugin-v{0}.txt"; const string pluginUrl = "http://u3d.as/content/valve-corporation/steam-vr-plugin"; const string doNotShowKey = "SteamVR.DoNotShow.v{0}"; + static bool gotVersion = false; static WWW wwwVersion, wwwNotes; static string version, notes; static SteamVR_Update window; static SteamVR_Update() { - wwwVersion = new WWW(versionUrl); EditorApplication.update += Update; } static void Update() { - if (wwwVersion != null) + if (!gotVersion) { + if (wwwVersion == null) + wwwVersion = new WWW(versionUrl); + if (!wwwVersion.isDone) return; @@ -39,6 +42,7 @@ static void Update() version = wwwVersion.text; wwwVersion = null; + gotVersion = true; if (ShouldDisplay()) { @@ -125,11 +129,7 @@ public void OnGUI() EditorGUILayout.HelpBox("A new version of the SteamVR plugin is available!", MessageType.Warning); var resourcePath = GetResourcePath(); -#if UNITY_5_0 - var logo = Resources.LoadAssetAtPath(resourcePath + "logo.png"); -#else var logo = AssetDatabase.LoadAssetAtPath(resourcePath + "logo.png"); -#endif var rect = GUILayoutUtility.GetRect(position.width, 150, GUI.skin.box); if (logo) GUI.DrawTexture(rect, logo, ScaleMode.ScaleToFit); From 62807f69550c0cf7be630df9fa6b5d3a654a4ffd Mon Sep 17 00:00:00 2001 From: Patrick Mahoney Date: Thu, 1 Jun 2017 22:26:15 -0400 Subject: [PATCH 5/9] More SteamVR.cs file changes. Some metadata files may have slipped in --- Assets/SteamVR/Editor/SteamVR_Editor.cs | 2 +- Assets/SteamVR/Editor/SteamVR_Settings.cs | 49 -- Assets/SteamVR/Resources/SteamVR_Blit.shader | 52 -- Assets/SteamVR/Scripts/SteamVR.cs | 140 ++---- Assets/SteamVR/Scripts/SteamVR_Camera.cs | 190 +------ Assets/SteamVR/Scripts/SteamVR_CameraFlip.cs | 17 +- Assets/SteamVR/Scripts/SteamVR_CameraMask.cs | 41 +- Assets/SteamVR/Scripts/SteamVR_Controller.cs | 4 +- .../Scripts/SteamVR_ControllerManager.cs | 466 +++++++++--------- Assets/SteamVR/Scripts/SteamVR_Ears.cs | 12 +- .../SteamVR/Scripts/SteamVR_ExternalCamera.cs | 7 +- Assets/SteamVR/Scripts/SteamVR_Frustum.cs | 10 +- Assets/SteamVR/Scripts/SteamVR_GameView.cs | 76 +-- Assets/SteamVR/Scripts/SteamVR_Overlay.cs | 6 +- Assets/SteamVR/Scripts/SteamVR_Render.cs | 191 +++---- .../SteamVR/Scripts/SteamVR_TrackedObject.cs | 24 +- Assets/SteamVR/Scripts/SteamVR_Utils.cs | 341 ++++++++----- 17 files changed, 644 insertions(+), 984 deletions(-) delete mode 100644 Assets/SteamVR/Resources/SteamVR_Blit.shader diff --git a/Assets/SteamVR/Editor/SteamVR_Editor.cs b/Assets/SteamVR/Editor/SteamVR_Editor.cs index 7a1061f..8889e49 100644 --- a/Assets/SteamVR/Editor/SteamVR_Editor.cs +++ b/Assets/SteamVR/Editor/SteamVR_Editor.cs @@ -1,4 +1,4 @@ -//========= Copyright 2014, Valve Corporation, All rights reserved. =========== +//======= Copyright (c) Valve Corporation, All rights reserved. =============== // // Purpose: Custom inspector display for SteamVR_Camera // diff --git a/Assets/SteamVR/Editor/SteamVR_Settings.cs b/Assets/SteamVR/Editor/SteamVR_Settings.cs index 83020e2..f6e8145 100644 --- a/Assets/SteamVR/Editor/SteamVR_Settings.cs +++ b/Assets/SteamVR/Editor/SteamVR_Settings.cs @@ -546,56 +546,7 @@ public void OnGUI() GUILayout.EndHorizontal(); } #endif -#if (UNITY_5_3 || UNITY_5_2 || UNITY_5_1 || UNITY_5_0) - if (!EditorPrefs.HasKey(ignore + stereoscopicRendering) && - PlayerSettings.stereoscopic3D != recommended_StereoscopicRendering) - { - ++numItems; - - GUILayout.Label(stereoscopicRendering + string.Format(currentValue, PlayerSettings.stereoscopic3D)); - - GUILayout.BeginHorizontal(); - - if (GUILayout.Button(string.Format(useRecommended, recommended_StereoscopicRendering))) - { - PlayerSettings.stereoscopic3D = recommended_StereoscopicRendering; - } - - GUILayout.FlexibleSpace(); - - if (GUILayout.Button("Ignore")) - { - EditorPrefs.SetBool(ignore + stereoscopicRendering, true); - } - GUILayout.EndHorizontal(); - } -#endif -#if (UNITY_5_3 || UNITY_5_2 || UNITY_5_1) - if (!EditorPrefs.HasKey(ignore + virtualRealitySupported) && - PlayerSettings.virtualRealitySupported != recommended_VirtualRealitySupported) - { - ++numItems; - - GUILayout.Label(virtualRealitySupported + string.Format(currentValue, PlayerSettings.virtualRealitySupported)); - - GUILayout.BeginHorizontal(); - - if (GUILayout.Button(string.Format(useRecommended, recommended_VirtualRealitySupported))) - { - PlayerSettings.virtualRealitySupported = recommended_VirtualRealitySupported; - } - - GUILayout.FlexibleSpace(); - - if (GUILayout.Button("Ignore")) - { - EditorPrefs.SetBool(ignore + virtualRealitySupported, true); - } - - GUILayout.EndHorizontal(); - } -#endif GUILayout.BeginHorizontal(); GUILayout.FlexibleSpace(); diff --git a/Assets/SteamVR/Resources/SteamVR_Blit.shader b/Assets/SteamVR/Resources/SteamVR_Blit.shader deleted file mode 100644 index 6086abb..0000000 --- a/Assets/SteamVR/Resources/SteamVR_Blit.shader +++ /dev/null @@ -1,52 +0,0 @@ -Shader "Custom/SteamVR_Blit" { - Properties { _MainTex ("Base (RGB)", 2D) = "white" {} } - - CGINCLUDE - - #include "UnityCG.cginc" - - sampler2D _MainTex; - - struct v2f { - float4 pos : SV_POSITION; - float2 tex : TEXCOORD0; - }; - - v2f vert(appdata_base v) { - v2f o; - o.pos = v.vertex; - o.tex = v.texcoord; - return o; - } - - float4 frag(v2f i) : COLOR { - return tex2D(_MainTex, i.tex); - } - - float4 frag_linear(v2f i) : COLOR { - return pow(tex2D(_MainTex, i.tex), 1.0 / 2.2); - } - - ENDCG - - SubShader { - Pass { - ZTest Always Cull Off ZWrite Off - Fog { Mode Off } - - CGPROGRAM - #pragma vertex vert - #pragma fragment frag - ENDCG - } - Pass { - ZTest Always Cull Off ZWrite Off - Fog { Mode Off } - - CGPROGRAM - #pragma vertex vert - #pragma fragment frag_linear - ENDCG - } - } -} diff --git a/Assets/SteamVR/Scripts/SteamVR.cs b/Assets/SteamVR/Scripts/SteamVR.cs index c246a8c..06a7aea 100644 --- a/Assets/SteamVR/Scripts/SteamVR.cs +++ b/Assets/SteamVR/Scripts/SteamVR.cs @@ -1,11 +1,10 @@ -//========= Copyright 2014, Valve Corporation, All rights reserved. =========== +//======= Copyright (c) Valve Corporation, All rights reserved. =============== // // Purpose: Access to SteamVR system (hmd) and compositor (distort) interfaces. // //============================================================================= using UnityEngine; -using System.Runtime.InteropServices; using Valve.VR; public class SteamVR : System.IDisposable @@ -18,7 +17,12 @@ public class SteamVR : System.IDisposable private static bool _enabled = true; public static bool enabled { - get { return _enabled; } + get + { + if (!UnityEngine.VR.VRSettings.enabled) + enabled = false; + return _enabled; + } set { _enabled = value; @@ -54,14 +58,7 @@ public static SteamVR instance public static bool usingNativeSupport { - get - { -#if !(UNITY_5_3 || UNITY_5_2 || UNITY_5_1 || UNITY_5_0) - return UnityEngine.VR.VRDevice.GetNativePtr() != System.IntPtr.Zero; -#else - return false; -#endif - } + get { return UnityEngine.VR.VRDevice.GetNativePtr() != System.IntPtr.Zero; } } static SteamVR CreateInstance() @@ -71,18 +68,8 @@ static SteamVR CreateInstance() var error = EVRInitError.None; if (!SteamVR.usingNativeSupport) { -#if !(UNITY_5_3 || UNITY_5_2 || UNITY_5_1 || UNITY_5_0) Debug.Log("OpenVR initialization failed. Ensure 'Virtual Reality Supported' is checked in Player Settings, and OpenVR is added to the list of Virtual Reality SDKs."); return null; -#else - OpenVR.Init(ref error, EVRApplicationType.VRApplication_Overlay); - if (error != EVRInitError.None) - { - ReportError(error); - ShutdownSystems(); - return null; - } -#endif } // Verify common interfaces are valid. @@ -91,7 +78,6 @@ static SteamVR CreateInstance() if (error != EVRInitError.None) { ReportError(error); - ShutdownSystems(); return null; } @@ -99,7 +85,6 @@ static SteamVR CreateInstance() if (error != EVRInitError.None) { ReportError(error); - ShutdownSystems(); return null; } } @@ -153,7 +138,7 @@ static void ReportError(EVRInitError error) public Vector2 tanHalfFov { get; private set; } public VRTextureBounds_t[] textureBounds { get; private set; } public SteamVR_Utils.RigidTransform[] eyes { get; private set; } - public EGraphicsAPIConvention graphicsAPI; + public ETextureType textureType; // hmd properties public string hmd_TrackingSystemName { get { return GetStringProperty(ETrackedDeviceProperty.Prop_TrackingSystemName_String); } } @@ -197,31 +182,28 @@ float GetFloatProperty(ETrackedDeviceProperty prop) #region Event callbacks - private void OnInitializing(params object[] args) + private void OnInitializing(bool initializing) { - initializing = (bool)args[0]; + SteamVR.initializing = initializing; } - private void OnCalibrating(params object[] args) + private void OnCalibrating(bool calibrating) { - calibrating = (bool)args[0]; + SteamVR.calibrating = calibrating; } - private void OnOutOfRange(params object[] args) + private void OnOutOfRange(bool outOfRange) { - outOfRange = (bool)args[0]; + SteamVR.outOfRange = outOfRange; } - private void OnDeviceConnected(params object[] args) + private void OnDeviceConnected(int i, bool connected) { - var i = (int)args[0]; - connected[i] = (bool)args[1]; + SteamVR.connected[i] = connected; } - private void OnNewPoses(params object[] args) + private void OnNewPoses(TrackedDevicePose_t[] poses) { - var poses = (TrackedDevicePose_t[])args[0]; - // Update eye offsets to account for IPD changes. eyes[0] = new SteamVR_Utils.RigidTransform(hmd.GetEyeToHeadTransform(EVREye.Eye_Left)); eyes[1] = new SteamVR_Utils.RigidTransform(hmd.GetEyeToHeadTransform(EVREye.Eye_Right)); @@ -231,7 +213,7 @@ private void OnNewPoses(params object[] args) var connected = poses[i].bDeviceIsConnected; if (connected != SteamVR.connected[i]) { - SteamVR_Utils.Event.Send("device_connected", i, connected); + SteamVR_Events.DeviceConnected.Send(i, connected); } } @@ -242,7 +224,7 @@ private void OnNewPoses(params object[] args) var initializing = result == ETrackingResult.Uninitialized; if (initializing != SteamVR.initializing) { - SteamVR_Utils.Event.Send("initializing", initializing); + SteamVR_Events.Initializing.Send(initializing); } var calibrating = @@ -250,7 +232,7 @@ private void OnNewPoses(params object[] args) result == ETrackingResult.Calibrating_OutOfRange; if (calibrating != SteamVR.calibrating) { - SteamVR_Utils.Event.Send("calibrating", calibrating); + SteamVR_Events.Calibrating.Send(calibrating); } var outOfRange = @@ -258,7 +240,7 @@ private void OnNewPoses(params object[] args) result == ETrackingResult.Calibrating_OutOfRange; if (outOfRange != SteamVR.outOfRange) { - SteamVR_Utils.Event.Send("out_of_range", outOfRange); + SteamVR_Events.OutOfRange.Send(outOfRange); } } } @@ -301,9 +283,6 @@ private SteamVR() textureBounds[1].vMin = 0.5f - 0.5f * r_bottom / tanHalfFov.y; textureBounds[1].vMax = 0.5f - 0.5f * r_top / tanHalfFov.y; -#if (UNITY_5_3 || UNITY_5_2 || UNITY_5_1 || UNITY_5_0) - SteamVR.Unity.SetSubmitParams(textureBounds[0], textureBounds[1], EVRSubmitFlags.Submit_Default); -#endif // Grow the recommended size to account for the overlapping fov sceneWidth = sceneWidth / Mathf.Max(textureBounds[0].uMax - textureBounds[0].uMin, textureBounds[1].uMax - textureBounds[1].uMin); sceneHeight = sceneHeight / Mathf.Max(textureBounds[0].vMax - textureBounds[0].vMin, textureBounds[1].vMax - textureBounds[1].vMin); @@ -315,16 +294,31 @@ private SteamVR() new SteamVR_Utils.RigidTransform(hmd.GetEyeToHeadTransform(EVREye.Eye_Left)), new SteamVR_Utils.RigidTransform(hmd.GetEyeToHeadTransform(EVREye.Eye_Right)) }; - if (SystemInfo.graphicsDeviceVersion.StartsWith("OpenGL")) - graphicsAPI = EGraphicsAPIConvention.API_OpenGL; - else - graphicsAPI = EGraphicsAPIConvention.API_DirectX; + switch (SystemInfo.graphicsDeviceType) + { +#if (UNITY_5_4) + case UnityEngine.Rendering.GraphicsDeviceType.OpenGL2: +#endif + case UnityEngine.Rendering.GraphicsDeviceType.OpenGLCore: + case UnityEngine.Rendering.GraphicsDeviceType.OpenGLES2: + case UnityEngine.Rendering.GraphicsDeviceType.OpenGLES3: + textureType = ETextureType.OpenGL; + break; +#if !(UNITY_5_4) + case UnityEngine.Rendering.GraphicsDeviceType.Vulkan: + textureType = ETextureType.Vulkan; + break; +#endif + default: + textureType = ETextureType.DirectX; + break; + } - SteamVR_Utils.Event.Listen("initializing", OnInitializing); - SteamVR_Utils.Event.Listen("calibrating", OnCalibrating); - SteamVR_Utils.Event.Listen("out_of_range", OnOutOfRange); - SteamVR_Utils.Event.Listen("device_connected", OnDeviceConnected); - SteamVR_Utils.Event.Listen("new_poses", OnNewPoses); + SteamVR_Events.Initializing.Listen(OnInitializing); + SteamVR_Events.Calibrating.Listen(OnCalibrating); + SteamVR_Events.OutOfRange.Listen(OnOutOfRange); + SteamVR_Events.DeviceConnected.Listen(OnDeviceConnected); + SteamVR_Events.NewPoses.Listen(OnNewPoses); } ~SteamVR() @@ -340,52 +334,20 @@ public void Dispose() private void Dispose(bool disposing) { - SteamVR_Utils.Event.Remove("initializing", OnInitializing); - SteamVR_Utils.Event.Remove("calibrating", OnCalibrating); - SteamVR_Utils.Event.Remove("out_of_range", OnOutOfRange); - SteamVR_Utils.Event.Remove("device_connected", OnDeviceConnected); - SteamVR_Utils.Event.Remove("new_poses", OnNewPoses); + SteamVR_Events.Initializing.Remove(OnInitializing); + SteamVR_Events.Calibrating.Remove(OnCalibrating); + SteamVR_Events.OutOfRange.Remove(OnOutOfRange); + SteamVR_Events.DeviceConnected.Remove(OnDeviceConnected); + SteamVR_Events.NewPoses.Remove(OnNewPoses); - ShutdownSystems(); _instance = null; } - private static void ShutdownSystems() - { -#if (UNITY_5_3 || UNITY_5_2 || UNITY_5_1 || UNITY_5_0) - OpenVR.Shutdown(); -#endif - } - // Use this interface to avoid accidentally creating the instance in the process of attempting to dispose of it. public static void SafeDispose() { if (_instance != null) _instance.Dispose(); } - -#if (UNITY_5_3 || UNITY_5_2 || UNITY_5_1 || UNITY_5_0) - // Unityhooks in openvr_api. - public class Unity - { - public const int k_nRenderEventID_WaitGetPoses = 201510020; - public const int k_nRenderEventID_SubmitL = 201510021; - public const int k_nRenderEventID_SubmitR = 201510022; - public const int k_nRenderEventID_Flush = 201510023; - public const int k_nRenderEventID_PostPresentHandoff = 201510024; - - [DllImport("openvr_api", EntryPoint = "UnityHooks_GetRenderEventFunc")] - public static extern System.IntPtr GetRenderEventFunc(); - - [DllImport("openvr_api", EntryPoint = "UnityHooks_SetSubmitParams")] - public static extern void SetSubmitParams(VRTextureBounds_t boundsL, VRTextureBounds_t boundsR, EVRSubmitFlags nSubmitFlags); - - [DllImport("openvr_api", EntryPoint = "UnityHooks_SetColorSpace")] - public static extern void SetColorSpace(EColorSpace eColorSpace); - - [DllImport("openvr_api", EntryPoint = "UnityHooks_EventWriteString")] - public static extern void EventWriteString([In, MarshalAs(UnmanagedType.LPWStr)] string sEvent); - } -#endif } diff --git a/Assets/SteamVR/Scripts/SteamVR_Camera.cs b/Assets/SteamVR/Scripts/SteamVR_Camera.cs index d041257..f70058c 100644 --- a/Assets/SteamVR/Scripts/SteamVR_Camera.cs +++ b/Assets/SteamVR/Scripts/SteamVR_Camera.cs @@ -1,4 +1,4 @@ -//========= Copyright 2014, Valve Corporation, All rights reserved. =========== +//======= Copyright (c) Valve Corporation, All rights reserved. =============== // // Purpose: Adds SteamVR render support to existing camera objects // @@ -18,6 +18,8 @@ public class SteamVR_Camera : MonoBehaviour public Transform offset { get { return _head; } } // legacy public Transform origin { get { return _head.parent; } } + public new Camera camera { get; private set; } + [SerializeField] private Transform _ears; public Transform ears { get { return _ears; } } @@ -29,63 +31,11 @@ public Ray GetRay() public bool wireframe = false; - [SerializeField] - private SteamVR_CameraFlip flip; - - #region Materials - - static public Material blitMaterial; - -#if (UNITY_5_3 || UNITY_5_2 || UNITY_5_1 || UNITY_5_0) - // Using a single shared offscreen buffer to render the scene. This needs to be larger - // than the backbuffer to account for distortion correction. The default resolution - // gives us 1:1 sized pixels in the center of view, but quality can be adjusted up or - // down using the following scale value to balance performance. - static public float sceneResolutionScale = 1.0f; - static private RenderTexture _sceneTexture; - static public RenderTexture GetSceneTexture(bool hdr) - { - var vr = SteamVR.instance; - if (vr == null) - return null; - - int w = (int)(vr.sceneWidth * sceneResolutionScale); - int h = (int)(vr.sceneHeight * sceneResolutionScale); - int aa = QualitySettings.antiAliasing == 0 ? 1 : QualitySettings.antiAliasing; - var format = hdr ? RenderTextureFormat.ARGBHalf : RenderTextureFormat.ARGB32; - - if (_sceneTexture != null) - { - if (_sceneTexture.width != w || _sceneTexture.height != h || _sceneTexture.antiAliasing != aa || _sceneTexture.format != format) - { - Debug.Log(string.Format("Recreating scene texture.. Old: {0}x{1} MSAA={2} [{3}] New: {4}x{5} MSAA={6} [{7}]", - _sceneTexture.width, _sceneTexture.height, _sceneTexture.antiAliasing, _sceneTexture.format, w, h, aa, format)); - Object.Destroy(_sceneTexture); - _sceneTexture = null; - } - } - - if (_sceneTexture == null) - { - _sceneTexture = new RenderTexture(w, h, 0, format); - _sceneTexture.antiAliasing = aa; - - // OpenVR assumes floating point render targets are linear unless otherwise specified. - var colorSpace = (hdr && QualitySettings.activeColorSpace == ColorSpace.Gamma) ? EColorSpace.Gamma : EColorSpace.Auto; - SteamVR.Unity.SetColorSpace(colorSpace); - } - - return _sceneTexture; - } -#else static public float sceneResolutionScale { get { return UnityEngine.VR.VRSettings.renderScale; } set { UnityEngine.VR.VRSettings.renderScale = value; } } -#endif - - #endregion #region Enable / Disable @@ -102,17 +52,13 @@ void OnEnable() { if (head != null) { - head.GetComponent().enabled = false; head.GetComponent().enabled = false; } - if (flip != null) - flip.enabled = false; - enabled = false; return; } -#if !(UNITY_5_3 || UNITY_5_2 || UNITY_5_1 || UNITY_5_0) + // Convert camera rig for native OpenVR integration. var t = transform; if (head != t) @@ -135,42 +81,6 @@ void OnEnable() _head = t; } - if (flip != null) - { - DestroyImmediate(flip); - flip = null; - } -#else - // Ensure rig is properly set up - Expand(); - - if (blitMaterial == null) - { - blitMaterial = new Material(Shader.Find("Custom/SteamVR_Blit")); - } - - // Set remaining hmd specific settings - var camera = GetComponent(); - camera.fieldOfView = vr.fieldOfView; - camera.aspect = vr.aspect; - camera.eventMask = 0; // disable mouse events - camera.orthographic = false; // force perspective - camera.enabled = false; // manually rendered by SteamVR_Render - - if (camera.actualRenderingPath != RenderingPath.Forward && QualitySettings.antiAliasing > 1) - { - Debug.LogWarning("MSAA only supported in Forward rendering path. (disabling MSAA)"); - QualitySettings.antiAliasing = 0; - } - - // Ensure game view camera hdr setting matches - var headCam = head.GetComponent(); - if (headCam != null) - { - headCam.hdr = camera.hdr; - headCam.renderingPath = camera.renderingPath; - } -#endif if (ears == null) { var e = transform.GetComponentInChildren(); @@ -188,7 +98,11 @@ void OnEnable() #region Functionality to ensure SteamVR_Camera component is always the last component on an object - void Awake() { ForceLast(); } + void Awake() + { + camera = GetComponent(); // cached to avoid runtime lookup + ForceLast(); + } static Hashtable values; @@ -215,23 +129,14 @@ public void ForceLast() var c = components[i] as SteamVR_Camera; if (c != null && c != this) { - if (c.flip != null) - DestroyImmediate(c.flip); DestroyImmediate(c); } } components = GetComponents(); -#if !(UNITY_5_3 || UNITY_5_2 || UNITY_5_1 || UNITY_5_0) if (this != components[components.Length - 1]) { -#else - if (this != components[components.Length - 1] || flip == null) - { - if (flip == null) - flip = gameObject.AddComponent(); -#endif // Store off values to be restored on new instance values = new Hashtable(); var fields = GetType().GetFields(BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.Public); @@ -275,22 +180,12 @@ public void Expand() if (head == null) { - _head = new GameObject(name + headSuffix, typeof(SteamVR_GameView), typeof(SteamVR_TrackedObject)).transform; + _head = new GameObject(name + headSuffix, typeof(SteamVR_TrackedObject)).transform; head.parent = _origin; head.position = transform.position; head.rotation = transform.rotation; head.localScale = Vector3.one; head.tag = tag; - - var camera = head.GetComponent(); - camera.clearFlags = CameraClearFlags.Nothing; - camera.cullingMask = 0; - camera.eventMask = 0; - camera.orthographic = true; - camera.orthographicSize = 1; - camera.nearClipPlane = 0; - camera.farClipPlane = 1; - camera.useOcclusionCulling = false; } if (transform.parent != head) @@ -378,70 +273,5 @@ public void Collapse() } #endregion - -#if (UNITY_5_3 || UNITY_5_2 || UNITY_5_1 || UNITY_5_0) - - #region Render callbacks - - void OnPreRender() - { - if (flip) - flip.enabled = (SteamVR_Render.Top() == this && SteamVR.instance.graphicsAPI == EGraphicsAPIConvention.API_DirectX); - - var headCam = head.GetComponent(); - if (headCam != null) - headCam.enabled = (SteamVR_Render.Top() == this); - - if (wireframe) - GL.wireframe = true; - } - - void OnPostRender() - { - if (wireframe) - GL.wireframe = false; - } - - void OnRenderImage(RenderTexture src, RenderTexture dest) - { - if (SteamVR_Render.Top() == this) - { - int eventID; - if (SteamVR_Render.eye == EVREye.Eye_Left) - { - // Get gpu started on work early to avoid bubbles at the top of the frame. - SteamVR_Utils.QueueEventOnRenderThread(SteamVR.Unity.k_nRenderEventID_Flush); - - eventID = SteamVR.Unity.k_nRenderEventID_SubmitL; - } - else - { - eventID = SteamVR.Unity.k_nRenderEventID_SubmitR; - } - - // Queue up a call on the render thread to Submit our render target to the compositor. - SteamVR_Utils.QueueEventOnRenderThread(eventID); - } - - Graphics.SetRenderTarget(dest); - SteamVR_Camera.blitMaterial.mainTexture = src; - - GL.PushMatrix(); - GL.LoadOrtho(); - SteamVR_Camera.blitMaterial.SetPass(0); - GL.Begin(GL.QUADS); - GL.TexCoord2(0.0f, 0.0f); GL.Vertex3(-1, 1, 0); - GL.TexCoord2(1.0f, 0.0f); GL.Vertex3( 1, 1, 0); - GL.TexCoord2(1.0f, 1.0f); GL.Vertex3( 1, -1, 0); - GL.TexCoord2(0.0f, 1.0f); GL.Vertex3(-1, -1, 0); - GL.End(); - GL.PopMatrix(); - - Graphics.SetRenderTarget(null); - } - - #endregion - -#endif } diff --git a/Assets/SteamVR/Scripts/SteamVR_CameraFlip.cs b/Assets/SteamVR/Scripts/SteamVR_CameraFlip.cs index 97e6854..c1b150e 100644 --- a/Assets/SteamVR/Scripts/SteamVR_CameraFlip.cs +++ b/Assets/SteamVR/Scripts/SteamVR_CameraFlip.cs @@ -1,25 +1,18 @@ -//========= Copyright 2015, Valve Corporation, All rights reserved. =========== +//======= Copyright (c) Valve Corporation, All rights reserved. =============== // // Purpose: Flips the camera output back to normal for D3D. // //============================================================================= using UnityEngine; -using System.Collections; +[ExecuteInEditMode] public class SteamVR_CameraFlip : MonoBehaviour { - static Material blitMaterial; - - void OnEnable() - { - if (blitMaterial == null) - blitMaterial = new Material(Shader.Find("Custom/SteamVR_BlitFlip")); - } - - void OnRenderImage(RenderTexture src, RenderTexture dest) + void Awake() { - Graphics.Blit(src, dest, blitMaterial); + Debug.Log("SteamVR_CameraFlip is deprecated in Unity 5.4 - REMOVING"); + DestroyImmediate(this); } } diff --git a/Assets/SteamVR/Scripts/SteamVR_CameraMask.cs b/Assets/SteamVR/Scripts/SteamVR_CameraMask.cs index e16205d..3aefb4e 100644 --- a/Assets/SteamVR/Scripts/SteamVR_CameraMask.cs +++ b/Assets/SteamVR/Scripts/SteamVR_CameraMask.cs @@ -1,51 +1,18 @@ -//========= Copyright 2014, Valve Corporation, All rights reserved. =========== +//======= Copyright (c) Valve Corporation, All rights reserved. =============== // // Purpose: Masks out pixels that cannot be seen through the connected hmd. // //============================================================================= using UnityEngine; -using System.Collections; -using UnityEngine.Rendering; -[RequireComponent(typeof(MeshFilter), typeof(MeshRenderer))] +[ExecuteInEditMode] public class SteamVR_CameraMask : MonoBehaviour { - static Material material; - static Mesh[] hiddenAreaMeshes = new Mesh[] { null, null }; - - MeshFilter meshFilter; - void Awake() { - meshFilter = GetComponent(); - - if (material == null) - material = new Material(Shader.Find("Custom/SteamVR_HiddenArea")); - - var mr = GetComponent(); - mr.material = material; - mr.shadowCastingMode = ShadowCastingMode.Off; - mr.receiveShadows = false; -#if !(UNITY_5_3 || UNITY_5_2 || UNITY_5_1 || UNITY_5_0) - mr.lightProbeUsage = LightProbeUsage.Off; -#else - mr.useLightProbes = false; -#endif - mr.reflectionProbeUsage = ReflectionProbeUsage.Off; - } - - public void Set(SteamVR vr, Valve.VR.EVREye eye) - { - int i = (int)eye; - if (hiddenAreaMeshes[i] == null) - hiddenAreaMeshes[i] = SteamVR_Utils.CreateHiddenAreaMesh(vr.hmd.GetHiddenAreaMesh(eye), vr.textureBounds[i]); - meshFilter.mesh = hiddenAreaMeshes[i]; - } - - public void Clear() - { - meshFilter.mesh = null; + Debug.Log("SteamVR_CameraMask is deprecated in Unity 5.4 - REMOVING"); + DestroyImmediate(this); } } diff --git a/Assets/SteamVR/Scripts/SteamVR_Controller.cs b/Assets/SteamVR/Scripts/SteamVR_Controller.cs index 95c1ac0..bfaef94 100644 --- a/Assets/SteamVR/Scripts/SteamVR_Controller.cs +++ b/Assets/SteamVR/Scripts/SteamVR_Controller.cs @@ -1,4 +1,4 @@ -//========= Copyright 2015, Valve Corporation, All rights reserved. =========== +//======= Copyright (c) Valve Corporation, All rights reserved. =============== // // Purpose: Wrapper for working with SteamVR controller input // @@ -65,7 +65,7 @@ public void Update() var system = OpenVR.System; if (system != null) { - valid = system.GetControllerStateWithPose(SteamVR_Render.instance.trackingSpace, index, ref state, ref pose); + valid = system.GetControllerStateWithPose(SteamVR_Render.instance.trackingSpace, index, ref state, (uint)System.Runtime.InteropServices.Marshal.SizeOf(typeof(VRControllerState_t)), ref pose); UpdateHairTrigger(); } } diff --git a/Assets/SteamVR/Scripts/SteamVR_ControllerManager.cs b/Assets/SteamVR/Scripts/SteamVR_ControllerManager.cs index ad3b116..832fbd8 100644 --- a/Assets/SteamVR/Scripts/SteamVR_ControllerManager.cs +++ b/Assets/SteamVR/Scripts/SteamVR_ControllerManager.cs @@ -10,228 +10,248 @@ public class SteamVR_ControllerManager : MonoBehaviour { - public GameObject left, right; - public GameObject[] objects; // populate with objects you want to assign to additional controllers - - uint[] indices; // assigned - bool[] connected = new bool[OpenVR.k_unMaxTrackedDeviceCount]; // controllers only - - // cached roles - may or may not be connected - uint leftIndex = OpenVR.k_unTrackedDeviceIndexInvalid; - uint rightIndex = OpenVR.k_unTrackedDeviceIndexInvalid; - - void Awake() - { - // Add left and right entries to the head of the list so we only have to operate on the list itself. - var additional = (this.objects != null) ? this.objects.Length : 0; - var objects = new GameObject[2 + additional]; - indices = new uint[2 + additional]; - objects[0] = right; - indices[0] = OpenVR.k_unTrackedDeviceIndexInvalid; - objects[1] = left; - indices[1] = OpenVR.k_unTrackedDeviceIndexInvalid; - for (int i = 0; i < additional; i++) - { - objects[2 + i] = this.objects[i]; - indices[2 + i] = OpenVR.k_unTrackedDeviceIndexInvalid; - } - this.objects = objects; - } - - void OnEnable() - { - for (int i = 0; i < objects.Length; i++) - { - var obj = objects[i]; - if (obj != null) - obj.SetActive(false); - } - - OnTrackedDeviceRoleChanged(); - - for (int i = 0; i < SteamVR.connected.Length; i++) - if (SteamVR.connected[i]) - OnDeviceConnected(i, true); - - SteamVR_Utils.Event.Listen("input_focus", OnInputFocus); - SteamVR_Utils.Event.Listen("device_connected", OnDeviceConnected); - SteamVR_Utils.Event.Listen("TrackedDeviceRoleChanged", OnTrackedDeviceRoleChanged); - } - - void OnDisable() - { - SteamVR_Utils.Event.Remove("input_focus", OnInputFocus); - SteamVR_Utils.Event.Remove("device_connected", OnDeviceConnected); - SteamVR_Utils.Event.Remove("TrackedDeviceRoleChanged", OnTrackedDeviceRoleChanged); - } - - static string[] labels = { "left", "right" }; - - // Hide controllers when the dashboard is up. - private void OnInputFocus(params object[] args) - { - bool hasFocus = (bool)args[0]; - if (hasFocus) - { - for (int i = 0; i < objects.Length; i++) - { - var obj = objects[i]; - if (obj != null) - { - var label = (i < 2) ? labels[i] : (i - 1).ToString(); - ShowObject(obj.transform, "hidden (" + label + ")"); - } - } - } - else - { - for (int i = 0; i < objects.Length; i++) - { - var obj = objects[i]; - if (obj != null) - { - var label = (i < 2) ? labels[i] : (i - 1).ToString(); - HideObject(obj.transform, "hidden (" + label + ")"); - } - } - } - } - - // Reparents to a new object and deactivates that object (this allows - // us to call SetActive in OnDeviceConnected independently. - private void HideObject(Transform t, string name) - { - var hidden = new GameObject(name).transform; - hidden.parent = t.parent; - t.parent = hidden; - hidden.gameObject.SetActive(false); - } - private void ShowObject(Transform t, string name) - { - var hidden = t.parent; - if (hidden.gameObject.name != name) - return; - t.parent = hidden.parent; - Destroy(hidden.gameObject); - } - - private void SetTrackedDeviceIndex(int objectIndex, uint trackedDeviceIndex) - { - // First make sure no one else is already using this index. - if (trackedDeviceIndex != OpenVR.k_unTrackedDeviceIndexInvalid) - { - for (int i = 0; i < objects.Length; i++) - { - if (i != objectIndex && indices[i] == trackedDeviceIndex) - { - var obj = objects[i]; - if (obj != null) - obj.SetActive(false); - - indices[i] = OpenVR.k_unTrackedDeviceIndexInvalid; - } - } - } - - // Only set when changed. - if (trackedDeviceIndex != indices[objectIndex]) - { - indices[objectIndex] = trackedDeviceIndex; - - var obj = objects[objectIndex]; - if (obj != null) - { - if (trackedDeviceIndex == OpenVR.k_unTrackedDeviceIndexInvalid) - obj.SetActive(false); - else - { - obj.SetActive(true); - obj.BroadcastMessage("SetDeviceIndex", (int)trackedDeviceIndex, SendMessageOptions.DontRequireReceiver); - } - } - } - } - - // Keep track of assigned roles. - private void OnTrackedDeviceRoleChanged(params object[] args) - { - Refresh(); - } - - // Keep track of connected controller indices. - private void OnDeviceConnected(params object[] args) - { - var index = (uint)(int)args[0]; - bool changed = this.connected[index]; - this.connected[index] = false; - - var connected = (bool)args[1]; - if (connected) - { - var system = OpenVR.System; - if (system != null && system.GetTrackedDeviceClass(index) == ETrackedDeviceClass.Controller) - { - this.connected[index] = true; - changed = !changed; // if we clear and set the same index, nothing has changed - } - } - - if (changed) - Refresh(); - } - - public void Refresh() - { - int objectIndex = 0; - - var system = OpenVR.System; - if (system != null) - { - leftIndex = system.GetTrackedDeviceIndexForControllerRole(ETrackedControllerRole.LeftHand); - rightIndex = system.GetTrackedDeviceIndexForControllerRole(ETrackedControllerRole.RightHand); - } - - // If neither role has been assigned yet, try hooking up at least the right controller. - if (leftIndex == OpenVR.k_unTrackedDeviceIndexInvalid && rightIndex == OpenVR.k_unTrackedDeviceIndexInvalid) - { - for (uint deviceIndex = 0; deviceIndex < connected.Length; deviceIndex++) - { - if (connected[deviceIndex]) - { - SetTrackedDeviceIndex(objectIndex++, deviceIndex); - break; - } - } - } - else - { - SetTrackedDeviceIndex(objectIndex++, (rightIndex < connected.Length && connected[rightIndex]) ? rightIndex : OpenVR.k_unTrackedDeviceIndexInvalid); - SetTrackedDeviceIndex(objectIndex++, (leftIndex < connected.Length && connected[leftIndex]) ? leftIndex : OpenVR.k_unTrackedDeviceIndexInvalid); - - // Assign out any additional controllers only after both left and right have been assigned. - if (leftIndex != OpenVR.k_unTrackedDeviceIndexInvalid && rightIndex != OpenVR.k_unTrackedDeviceIndexInvalid) - { - for (uint deviceIndex = 0; deviceIndex < connected.Length; deviceIndex++) - { - if (objectIndex >= objects.Length) - break; - - if (!connected[deviceIndex]) - continue; - - if (deviceIndex != leftIndex && deviceIndex != rightIndex) - { - SetTrackedDeviceIndex(objectIndex++, deviceIndex); - } - } - } - } - - // Reset the rest. - while (objectIndex < objects.Length) - { - SetTrackedDeviceIndex(objectIndex++, OpenVR.k_unTrackedDeviceIndexInvalid); - } - } + public GameObject left, right; + public GameObject[] objects; // populate with objects you want to assign to additional controllers + + public bool assignAllBeforeIdentified; // set to true if you want objects arbitrarily assigned to controllers before their role (left vs right) is identified + + uint[] indices; // assigned + bool[] connected = new bool[OpenVR.k_unMaxTrackedDeviceCount]; // controllers only + + // cached roles - may or may not be connected + uint leftIndex = OpenVR.k_unTrackedDeviceIndexInvalid; + uint rightIndex = OpenVR.k_unTrackedDeviceIndexInvalid; + + // This needs to be called if you update left, right or objects at runtime (e.g. when dyanmically spawned). + public void UpdateTargets() + { + // Add left and right entries to the head of the list so we only have to operate on the list itself. + var additional = (this.objects != null) ? this.objects.Length : 0; + var objects = new GameObject[2 + additional]; + indices = new uint[2 + additional]; + objects[0] = right; + indices[0] = OpenVR.k_unTrackedDeviceIndexInvalid; + objects[1] = left; + indices[1] = OpenVR.k_unTrackedDeviceIndexInvalid; + for (int i = 0; i < additional; i++) + { + objects[2 + i] = this.objects[i]; + indices[2 + i] = OpenVR.k_unTrackedDeviceIndexInvalid; + } + this.objects = objects; + } + + SteamVR_Events.Action inputFocusAction, deviceConnectedAction, trackedDeviceRoleChangedAction; + + void Awake() + { + UpdateTargets(); + inputFocusAction = SteamVR_Events.InputFocusAction(OnInputFocus); + deviceConnectedAction = SteamVR_Events.DeviceConnectedAction(OnDeviceConnected); + trackedDeviceRoleChangedAction = SteamVR_Events.SystemAction(EVREventType.VREvent_TrackedDeviceRoleChanged, OnTrackedDeviceRoleChanged); + } + + void OnEnable() + { + for (int i = 0; i < objects.Length; i++) + { + var obj = objects[i]; + if (obj != null) + obj.SetActive(false); + } + + Refresh(); + + for (int i = 0; i < SteamVR.connected.Length; i++) + if (SteamVR.connected[i]) + OnDeviceConnected(i, true); + + inputFocusAction.enabled = true; + deviceConnectedAction.enabled = true; + trackedDeviceRoleChangedAction.enabled = true; + } + + void OnDisable() + { + inputFocusAction.enabled = false; + deviceConnectedAction.enabled = false; + trackedDeviceRoleChangedAction.enabled = false; + } + + static string[] labels = { "left", "right" }; + + // Hide controllers when the dashboard is up. + private void OnInputFocus(bool hasFocus) + { + if (hasFocus) + { + for (int i = 0; i < objects.Length; i++) + { + var obj = objects[i]; + if (obj != null) + { + var label = (i < 2) ? labels[i] : (i - 1).ToString(); + ShowObject(obj.transform, "hidden (" + label + ")"); + } + } + } + else + { + for (int i = 0; i < objects.Length; i++) + { + var obj = objects[i]; + if (obj != null) + { + var label = (i < 2) ? labels[i] : (i - 1).ToString(); + HideObject(obj.transform, "hidden (" + label + ")"); + } + } + } + } + + // Reparents to a new object and deactivates that object (this allows + // us to call SetActive in OnDeviceConnected independently. + private void HideObject(Transform t, string name) + { + var hidden = new GameObject(name).transform; + hidden.parent = t.parent; + t.parent = hidden; + hidden.gameObject.SetActive(false); + } + private void ShowObject(Transform t, string name) + { + var hidden = t.parent; + if (hidden.gameObject.name != name) + return; + t.parent = hidden.parent; + Destroy(hidden.gameObject); + } + + private void SetTrackedDeviceIndex(int objectIndex, uint trackedDeviceIndex) + { + // First make sure no one else is already using this index. + if (trackedDeviceIndex != OpenVR.k_unTrackedDeviceIndexInvalid) + { + for (int i = 0; i < objects.Length; i++) + { + if (i != objectIndex && indices[i] == trackedDeviceIndex) + { + var obj = objects[i]; + if (obj != null) + obj.SetActive(false); + + indices[i] = OpenVR.k_unTrackedDeviceIndexInvalid; + } + } + } + + // Only set when changed. + if (trackedDeviceIndex != indices[objectIndex]) + { + indices[objectIndex] = trackedDeviceIndex; + + var obj = objects[objectIndex]; + if (obj != null) + { + if (trackedDeviceIndex == OpenVR.k_unTrackedDeviceIndexInvalid) + obj.SetActive(false); + else + { + obj.SetActive(true); + obj.BroadcastMessage("SetDeviceIndex", (int)trackedDeviceIndex, SendMessageOptions.DontRequireReceiver); + } + } + } + } + + // Keep track of assigned roles. + private void OnTrackedDeviceRoleChanged(VREvent_t vrEvent) + { + Refresh(); + } + + // Keep track of connected controller indices. + private void OnDeviceConnected(int index, bool connected) + { + bool changed = this.connected[index]; + this.connected[index] = false; + + if (connected) + { + var system = OpenVR.System; + if (system != null) + { + var deviceClass = system.GetTrackedDeviceClass((uint)index); + if (deviceClass == ETrackedDeviceClass.Controller || + deviceClass == ETrackedDeviceClass.GenericTracker) + { + this.connected[index] = true; + changed = !changed; // if we clear and set the same index, nothing has changed + } + } + } + + if (changed) + Refresh(); + } + + public void Refresh() + { + int objectIndex = 0; + + var system = OpenVR.System; + if (system != null) + { + leftIndex = system.GetTrackedDeviceIndexForControllerRole(ETrackedControllerRole.LeftHand); + rightIndex = system.GetTrackedDeviceIndexForControllerRole(ETrackedControllerRole.RightHand); + } + + // If neither role has been assigned yet, try hooking up at least the right controller. + if (leftIndex == OpenVR.k_unTrackedDeviceIndexInvalid && rightIndex == OpenVR.k_unTrackedDeviceIndexInvalid) + { + for (uint deviceIndex = 0; deviceIndex < connected.Length; deviceIndex++) + { + if (objectIndex >= objects.Length) + break; + + if (!connected[deviceIndex]) + continue; + + SetTrackedDeviceIndex(objectIndex++, deviceIndex); + + if (!assignAllBeforeIdentified) + break; + } + } + else + { + SetTrackedDeviceIndex(objectIndex++, (rightIndex < connected.Length && connected[rightIndex]) ? rightIndex : OpenVR.k_unTrackedDeviceIndexInvalid); + SetTrackedDeviceIndex(objectIndex++, (leftIndex < connected.Length && connected[leftIndex]) ? leftIndex : OpenVR.k_unTrackedDeviceIndexInvalid); + + // Assign out any additional controllers only after both left and right have been assigned. + if (leftIndex != OpenVR.k_unTrackedDeviceIndexInvalid && rightIndex != OpenVR.k_unTrackedDeviceIndexInvalid) + { + for (uint deviceIndex = 0; deviceIndex < connected.Length; deviceIndex++) + { + if (objectIndex >= objects.Length) + break; + + if (!connected[deviceIndex]) + continue; + + if (deviceIndex != leftIndex && deviceIndex != rightIndex) + { + SetTrackedDeviceIndex(objectIndex++, deviceIndex); + } + } + } + } + + // Reset the rest. + while (objectIndex < objects.Length) + { + SetTrackedDeviceIndex(objectIndex++, OpenVR.k_unTrackedDeviceIndexInvalid); + } + } } diff --git a/Assets/SteamVR/Scripts/SteamVR_Ears.cs b/Assets/SteamVR/Scripts/SteamVR_Ears.cs index 6428b1f..ccc83da 100644 --- a/Assets/SteamVR/Scripts/SteamVR_Ears.cs +++ b/Assets/SteamVR/Scripts/SteamVR_Ears.cs @@ -1,4 +1,4 @@ -//========= Copyright 2016, Valve Corporation, All rights reserved. =========== +//======= Copyright (c) Valve Corporation, All rights reserved. =============== // // Purpose: Handles aligning audio listener when using speakers. // @@ -15,7 +15,7 @@ public class SteamVR_Ears : MonoBehaviour bool usingSpeakers; Quaternion offset; - private void OnNewPosesApplied(params object[] args) + private void OnNewPosesApplied() { var origin = vrcam.origin; var baseRotation = origin != null ? origin.rotation : Quaternion.identity; @@ -30,23 +30,23 @@ void OnEnable() if (settings != null) { var error = EVRSettingsError.None; - if (settings.GetBool(OpenVR.k_pch_SteamVR_Section, OpenVR.k_pch_SteamVR_UsingSpeakers_Bool, false, ref error)) + if (settings.GetBool(OpenVR.k_pch_SteamVR_Section, OpenVR.k_pch_SteamVR_UsingSpeakers_Bool, ref error)) { usingSpeakers = true; - var yawOffset = settings.GetFloat(OpenVR.k_pch_SteamVR_Section, OpenVR.k_pch_SteamVR_SpeakersForwardYawOffsetDegrees_Float, 0.0f, ref error); + var yawOffset = settings.GetFloat(OpenVR.k_pch_SteamVR_Section, OpenVR.k_pch_SteamVR_SpeakersForwardYawOffsetDegrees_Float, ref error); offset = Quaternion.Euler(0.0f, yawOffset, 0.0f); } } if (usingSpeakers) - SteamVR_Utils.Event.Listen("new_poses_applied", OnNewPosesApplied); + SteamVR_Events.NewPosesApplied.Listen(OnNewPosesApplied); } void OnDisable() { if (usingSpeakers) - SteamVR_Utils.Event.Remove("new_poses_applied", OnNewPosesApplied); + SteamVR_Events.NewPosesApplied.Remove(OnNewPosesApplied); } } diff --git a/Assets/SteamVR/Scripts/SteamVR_ExternalCamera.cs b/Assets/SteamVR/Scripts/SteamVR_ExternalCamera.cs index 48c3ae8..b7900e9 100644 --- a/Assets/SteamVR/Scripts/SteamVR_ExternalCamera.cs +++ b/Assets/SteamVR/Scripts/SteamVR_ExternalCamera.cs @@ -1,4 +1,4 @@ -//========= Copyright 2016, Valve Corporation, All rights reserved. =========== +//======= Copyright (c) Valve Corporation, All rights reserved. =============== // // Purpose: Used to render an external camera of vr player (split front/back). // @@ -119,7 +119,6 @@ public void AttachToCamera(SteamVR_Camera vrcam) go.name = "camera"; DestroyImmediate(go.GetComponent()); - DestroyImmediate(go.GetComponent()); cam = go.GetComponent(); cam.fieldOfView = config.fov; @@ -149,11 +148,7 @@ public void AttachToCamera(SteamVR_Camera vrcam) clipRenderer.material = clipMaterial; clipRenderer.shadowCastingMode = ShadowCastingMode.Off; clipRenderer.receiveShadows = false; -#if !(UNITY_5_3 || UNITY_5_2 || UNITY_5_1 || UNITY_5_0) clipRenderer.lightProbeUsage = LightProbeUsage.Off; -#else - clipRenderer.useLightProbes = false; -#endif clipRenderer.reflectionProbeUsage = ReflectionProbeUsage.Off; var clipTransform = clipQuad.transform; diff --git a/Assets/SteamVR/Scripts/SteamVR_Frustum.cs b/Assets/SteamVR/Scripts/SteamVR_Frustum.cs index db0520d..de547d1 100644 --- a/Assets/SteamVR/Scripts/SteamVR_Frustum.cs +++ b/Assets/SteamVR/Scripts/SteamVR_Frustum.cs @@ -1,4 +1,4 @@ -//========= Copyright 2014, Valve Corporation, All rights reserved. =========== +//======= Copyright (c) Valve Corporation, All rights reserved. =============== // // Purpose: Generates a mesh based on field of view. // @@ -87,15 +87,13 @@ public void UpdateModel() GetComponent().mesh = mesh; } - private void OnDeviceConnected(params object[] args) + private void OnDeviceConnected(int i, bool connected) { - var i = (int)args[0]; if (i != (int)index) return; GetComponent().mesh = null; - var connected = (bool)args[1]; if (connected) { var system = OpenVR.System; @@ -134,12 +132,12 @@ private void OnDeviceConnected(params object[] args) void OnEnable() { GetComponent().mesh = null; - SteamVR_Utils.Event.Listen("device_connected", OnDeviceConnected); + SteamVR_Events.DeviceConnected.Listen(OnDeviceConnected); } void OnDisable() { - SteamVR_Utils.Event.Remove("device_connected", OnDeviceConnected); + SteamVR_Events.DeviceConnected.Remove(OnDeviceConnected); GetComponent().mesh = null; } diff --git a/Assets/SteamVR/Scripts/SteamVR_GameView.cs b/Assets/SteamVR/Scripts/SteamVR_GameView.cs index b06a945..0cade74 100644 --- a/Assets/SteamVR/Scripts/SteamVR_GameView.cs +++ b/Assets/SteamVR/Scripts/SteamVR_GameView.cs @@ -1,4 +1,4 @@ -//========= Copyright 2014, Valve Corporation, All rights reserved. =========== +//======= Copyright (c) Valve Corporation, All rights reserved. =============== // // Purpose: Handles rendering to the game view window // @@ -6,79 +6,13 @@ using UnityEngine; -[RequireComponent(typeof(Camera))] +[ExecuteInEditMode] public class SteamVR_GameView : MonoBehaviour { -#if (UNITY_5_3 || UNITY_5_2 || UNITY_5_1 || UNITY_5_0) // DEPRECATED in Unity 5.4+ - public float scale = 1.5f; - public bool drawOverlay = true; - - static Material overlayMaterial; - - void OnEnable() - { - if (overlayMaterial == null) - { - overlayMaterial = new Material(Shader.Find("Custom/SteamVR_Overlay")); - } - } - - void OnPostRender() + void Awake() { - var vr = SteamVR.instance; - var camera = GetComponent(); - var aspect = scale * camera.aspect / vr.aspect; - - var x0 = -scale; - var x1 = scale; - var y0 = aspect; - var y1 = -aspect; - - var blitMaterial = SteamVR_Camera.blitMaterial; - blitMaterial.mainTexture = SteamVR_Camera.GetSceneTexture(camera.hdr); - - GL.PushMatrix(); - GL.LoadOrtho(); -#if !(UNITY_5_0) - blitMaterial.SetPass(0); -#else - blitMaterial.SetPass(QualitySettings.activeColorSpace == ColorSpace.Linear ? 1 : 0); -#endif - GL.Begin(GL.QUADS); - GL.TexCoord2(0.0f, 0.0f); GL.Vertex3(x0, y0, 0); - GL.TexCoord2(1.0f, 0.0f); GL.Vertex3(x1, y0, 0); - GL.TexCoord2(1.0f, 1.0f); GL.Vertex3(x1, y1, 0); - GL.TexCoord2(0.0f, 1.0f); GL.Vertex3(x0, y1, 0); - GL.End(); - GL.PopMatrix(); - - var overlay = SteamVR_Overlay.instance; - if (overlay && overlay.texture && overlayMaterial && drawOverlay) - { - var texture = overlay.texture; - overlayMaterial.mainTexture = texture; - - var u0 = 0.0f; - var v0 = 1.0f - (float)Screen.height / texture.height; - var u1 = (float)Screen.width / texture.width; - var v1 = 1.0f; - - GL.PushMatrix(); - GL.LoadOrtho(); -#if !(UNITY_5_0) - overlayMaterial.SetPass(QualitySettings.activeColorSpace == ColorSpace.Linear ? 1 : 0); -#else - overlayMaterial.SetPass(0); -#endif - GL.Begin(GL.QUADS); - GL.TexCoord2(u0, v0); GL.Vertex3(-1, -1, 0); - GL.TexCoord2(u1, v0); GL.Vertex3( 1, -1, 0); - GL.TexCoord2(u1, v1); GL.Vertex3( 1, 1, 0); - GL.TexCoord2(u0, v1); GL.Vertex3(-1, 1, 0); - GL.End(); - GL.PopMatrix(); - } + Debug.Log("SteamVR_GameView is deprecated in Unity 5.4 - REMOVING"); + DestroyImmediate(this); } -#endif } diff --git a/Assets/SteamVR/Scripts/SteamVR_Overlay.cs b/Assets/SteamVR/Scripts/SteamVR_Overlay.cs index b0e02ea..9d0563c 100644 --- a/Assets/SteamVR/Scripts/SteamVR_Overlay.cs +++ b/Assets/SteamVR/Scripts/SteamVR_Overlay.cs @@ -1,4 +1,4 @@ -//========= Copyright 2014, Valve Corporation, All rights reserved. =========== +//======= Copyright (c) Valve Corporation, All rights reserved. =============== // // Purpose: Displays 2d content on a large virtual screen. // @@ -30,7 +30,7 @@ public class SteamVR_Overlay : MonoBehaviour private ulong handle = OpenVR.k_ulOverlayHandleInvalid; - void OnEnable() + void OnEnable() { var overlay = OpenVR.Overlay; if (overlay != null) @@ -80,7 +80,7 @@ public void UpdateOverlay() var tex = new Texture_t(); tex.handle = texture.GetNativeTexturePtr(); - tex.eType = SteamVR.instance.graphicsAPI; + tex.eType = SteamVR.instance.textureType; tex.eColorSpace = EColorSpace.Auto; overlay.SetOverlayTexture(handle, ref tex); diff --git a/Assets/SteamVR/Scripts/SteamVR_Render.cs b/Assets/SteamVR/Scripts/SteamVR_Render.cs index d1c49ba..420040e 100644 --- a/Assets/SteamVR/Scripts/SteamVR_Render.cs +++ b/Assets/SteamVR/Scripts/SteamVR_Render.cs @@ -1,4 +1,4 @@ -//========= Copyright 2014, Valve Corporation, All rights reserved. =========== +//======= Copyright (c) Valve Corporation, All rights reserved. =============== // // Purpose: Handles rendering of all SteamVR_Cameras // @@ -16,11 +16,6 @@ public class SteamVR_Render : MonoBehaviour public SteamVR_ExternalCamera externalCamera; public string externalCameraConfigPath = "externalcamera.cfg"; -#if (UNITY_5_3 || UNITY_5_2 || UNITY_5_1 || UNITY_5_0) - public LayerMask leftMask, rightMask; - - SteamVR_CameraMask cameraMask; -#endif public ETrackingUniverseOrigin trackingSpace = ETrackingUniverseOrigin.TrackingUniverseStanding; static public EVREye eye { get; private set; } @@ -93,10 +88,6 @@ void AddInternal(SteamVR_Camera vrcam) sorted[insert] = vrcam; cameras = sorted; - -#if (UNITY_5_3 || UNITY_5_2 || UNITY_5_1 || UNITY_5_0) - enabled = true; -#endif } void RemoveInternal(SteamVR_Camera vrcam) @@ -142,19 +133,20 @@ static public bool pauseRendering set { _pauseRendering = value; -#if !(UNITY_5_3 || UNITY_5_2 || UNITY_5_1 || UNITY_5_0) + var compositor = OpenVR.Compositor; if (compositor != null) compositor.SuspendRendering(value); -#endif } } + private WaitForEndOfFrame waitForEndOfFrame = new WaitForEndOfFrame(); + private IEnumerator RenderLoop() { - while (true) + while (Application.isPlaying) { - yield return new WaitForEndOfFrame(); + yield return waitForEndOfFrame; if (pauseRendering) continue; @@ -166,19 +158,6 @@ private IEnumerator RenderLoop() continue; compositor.SetTrackingSpace(trackingSpace); - -#if (UNITY_5_3 || UNITY_5_2 || UNITY_5_1 || UNITY_5_0) - SteamVR_Utils.QueueEventOnRenderThread(SteamVR.Unity.k_nRenderEventID_WaitGetPoses); - - // Hack to flush render event that was queued in Update (this ensures WaitGetPoses has returned before we grab the new values). - SteamVR.Unity.EventWriteString("[UnityMain] GetNativeTexturePtr - Begin"); - SteamVR_Camera.GetSceneTexture(cameras[0].GetComponent().hdr).GetNativeTexturePtr(); - SteamVR.Unity.EventWriteString("[UnityMain] GetNativeTexturePtr - End"); - - compositor.GetLastPoses(poses, gamePoses); - SteamVR_Utils.Event.Send("new_poses", poses); - SteamVR_Utils.Event.Send("new_poses_applied"); -#endif } var overlay = SteamVR_Overlay.instance; @@ -186,60 +165,8 @@ private IEnumerator RenderLoop() overlay.UpdateOverlay(); RenderExternalCamera(); - -#if (UNITY_5_3 || UNITY_5_2 || UNITY_5_1 || UNITY_5_0) - var vr = SteamVR.instance; - RenderEye(vr, EVREye.Eye_Left); - RenderEye(vr, EVREye.Eye_Right); - - // Move cameras back to head position so they can be tracked reliably - foreach (var c in cameras) - { - c.transform.localPosition = Vector3.zero; - c.transform.localRotation = Quaternion.identity; - } - - if (cameraMask != null) - cameraMask.Clear(); -#endif - } - } - -#if (UNITY_5_3 || UNITY_5_2 || UNITY_5_1 || UNITY_5_0) - void RenderEye(SteamVR vr, EVREye eye) - { - int i = (int)eye; - SteamVR_Render.eye = eye; - - if (cameraMask != null) - cameraMask.Set(vr, eye); - - foreach (var c in cameras) - { - c.transform.localPosition = vr.eyes[i].pos; - c.transform.localRotation = vr.eyes[i].rot; - - // Update position to keep from getting culled - cameraMask.transform.position = c.transform.position; - - var camera = c.GetComponent(); - camera.targetTexture = SteamVR_Camera.GetSceneTexture(camera.hdr); - int cullingMask = camera.cullingMask; - if (eye == EVREye.Eye_Left) - { - camera.cullingMask &= ~rightMask; - camera.cullingMask |= leftMask; - } - else - { - camera.cullingMask &= ~leftMask; - camera.cullingMask |= rightMask; - } - camera.Render(); - camera.cullingMask = cullingMask; } } -#endif void RenderExternalCamera() { @@ -262,9 +189,8 @@ void RenderExternalCamera() float sceneResolutionScale = 1.0f, timeScale = 1.0f; - private void OnInputFocus(params object[] args) + private void OnInputFocus(bool hasFocus) { - bool hasFocus = (bool)args[0]; if (hasFocus) { if (pauseGameWhenDashboardIsVisible) @@ -287,7 +213,7 @@ private void OnInputFocus(params object[] args) } } - void OnQuit(params object[] args) + void OnQuit(VREvent_t vrEvent) { #if UNITY_EDITOR foreach (System.Reflection.Assembly a in System.AppDomain.CurrentDomain.GetAssemblies()) @@ -304,27 +230,76 @@ void OnQuit(params object[] args) #endif } + private string GetScreenshotFilename(uint screenshotHandle, EVRScreenshotPropertyFilenames screenshotPropertyFilename) + { + var error = EVRScreenshotError.None; + var capacity = OpenVR.Screenshots.GetScreenshotPropertyFilename(screenshotHandle, screenshotPropertyFilename, null, 0, ref error); + if (error != EVRScreenshotError.None && error != EVRScreenshotError.BufferTooSmall) + return null; + if (capacity > 1) + { + var result = new System.Text.StringBuilder((int)capacity); + OpenVR.Screenshots.GetScreenshotPropertyFilename(screenshotHandle, screenshotPropertyFilename, result, capacity, ref error); + if (error != EVRScreenshotError.None) + return null; + return result.ToString(); + } + return null; + } + + private void OnRequestScreenshot(VREvent_t vrEvent) + { + var screenshotHandle = vrEvent.data.screenshot.handle; + var screenshotType = (EVRScreenshotType)vrEvent.data.screenshot.type; + + if (screenshotType == EVRScreenshotType.StereoPanorama) + { + string previewFilename = GetScreenshotFilename(screenshotHandle, EVRScreenshotPropertyFilenames.Preview); + string VRFilename = GetScreenshotFilename(screenshotHandle, EVRScreenshotPropertyFilenames.VR); + + if (previewFilename == null || VRFilename == null) + return; + + // Do the stereo panorama screenshot + // Figure out where the view is + GameObject screenshotPosition = new GameObject("screenshotPosition"); + screenshotPosition.transform.position = SteamVR_Render.Top().transform.position; + screenshotPosition.transform.rotation = SteamVR_Render.Top().transform.rotation; + screenshotPosition.transform.localScale = SteamVR_Render.Top().transform.lossyScale; + SteamVR_Utils.TakeStereoScreenshot(screenshotHandle, screenshotPosition, 32, 0.064f, ref previewFilename, ref VRFilename); + + // and submit it + OpenVR.Screenshots.SubmitScreenshot(screenshotHandle, screenshotType, previewFilename, VRFilename); + } + } + void OnEnable() { StartCoroutine("RenderLoop"); - SteamVR_Utils.Event.Listen("input_focus", OnInputFocus); - SteamVR_Utils.Event.Listen("Quit", OnQuit); + SteamVR_Events.InputFocus.Listen(OnInputFocus); + SteamVR_Events.System(EVREventType.VREvent_Quit).Listen(OnQuit); + SteamVR_Events.System(EVREventType.VREvent_RequestScreenshot).Listen(OnRequestScreenshot); + + var vr = SteamVR.instance; + if (vr == null) + { + enabled = false; + return; + } + var types = new EVRScreenshotType[] { EVRScreenshotType.StereoPanorama }; + OpenVR.Screenshots.HookScreenshot(types); } void OnDisable() { StopAllCoroutines(); - SteamVR_Utils.Event.Remove("input_focus", OnInputFocus); - SteamVR_Utils.Event.Remove("Quit", OnQuit); + SteamVR_Events.InputFocus.Remove(OnInputFocus); + SteamVR_Events.System(EVREventType.VREvent_Quit).Remove(OnQuit); + SteamVR_Events.System(EVREventType.VREvent_RequestScreenshot).Remove(OnRequestScreenshot); } void Awake() { -#if (UNITY_5_3 || UNITY_5_2 || UNITY_5_1 || UNITY_5_0) - var go = new GameObject("cameraMask"); - go.transform.parent = transform; - cameraMask = go.AddComponent(); -#endif if (externalCamera == null && System.IO.File.Exists(externalCameraConfigPath)) { var prefab = Resources.Load("SteamVR_ExternalCamera"); @@ -337,36 +312,19 @@ void Awake() } } - void FixedUpdate() - { -#if (UNITY_5_3 || UNITY_5_2 || UNITY_5_1 || UNITY_5_0) - // We want to call this as soon after Present as possible. - SteamVR_Utils.QueueEventOnRenderThread(SteamVR.Unity.k_nRenderEventID_PostPresentHandoff); -#endif - } - -#if !(UNITY_5_3 || UNITY_5_2 || UNITY_5_1 || UNITY_5_0) +#if !(UNITY_5_6) private SteamVR_UpdatePoses poseUpdater; #endif void Update() { -#if !(UNITY_5_3 || UNITY_5_2 || UNITY_5_1 || UNITY_5_0) +#if !(UNITY_5_6) if (poseUpdater == null) { var go = new GameObject("poseUpdater"); go.transform.parent = transform; poseUpdater = go.AddComponent(); } -#else - if (cameras.Length == 0) - { - enabled = false; - return; - } - - // If our FixedUpdate rate doesn't match our render framerate, then catch the handoff here. - SteamVR_Utils.QueueEventOnRenderThread(SteamVR.Unity.k_nRenderEventID_PostPresentHandoff); #endif // Force controller update in case no one else called this frame to ensure prevState gets updated. SteamVR_Controller.Update(); @@ -387,25 +345,23 @@ void Update() case EVREventType.VREvent_InputFocusCaptured: // another app has taken focus (likely dashboard) if (vrEvent.data.process.oldPid == 0) { - SteamVR_Utils.Event.Send("input_focus", false); + SteamVR_Events.InputFocus.Send(false); } break; case EVREventType.VREvent_InputFocusReleased: // that app has released input focus if (vrEvent.data.process.pid == 0) { - SteamVR_Utils.Event.Send("input_focus", true); + SteamVR_Events.InputFocus.Send(true); } break; case EVREventType.VREvent_ShowRenderModels: - SteamVR_Utils.Event.Send("hide_render_models", false); + SteamVR_Events.HideRenderModels.Send(false); break; case EVREventType.VREvent_HideRenderModels: - SteamVR_Utils.Event.Send("hide_render_models", true); + SteamVR_Events.HideRenderModels.Send(true); break; default: - var name = System.Enum.GetName(typeof(EVREventType), vrEvent.eventType); - if (name != null) - SteamVR_Utils.Event.Send(name.Substring(8) /*strip VREvent_*/, vrEvent); + SteamVR_Events.System((EVREventType)vrEvent.eventType).Send(vrEvent); break; } } @@ -427,7 +383,6 @@ void Update() vr.compositor.GetFrameTiming(ref timing, 0); Time.fixedDeltaTime = Time.timeScale / vr.hmd_DisplayFrequency; - Time.maximumDeltaTime = Time.fixedDeltaTime * timing.m_nNumFramePresents; } } } diff --git a/Assets/SteamVR/Scripts/SteamVR_TrackedObject.cs b/Assets/SteamVR/Scripts/SteamVR_TrackedObject.cs index 133602b..a351540 100644 --- a/Assets/SteamVR/Scripts/SteamVR_TrackedObject.cs +++ b/Assets/SteamVR/Scripts/SteamVR_TrackedObject.cs @@ -1,4 +1,4 @@ -//========= Copyright 2014, Valve Corporation, All rights reserved. =========== +//======= Copyright (c) Valve Corporation, All rights reserved. =============== // // Purpose: For controlling in-game objects with tracked devices. // @@ -34,7 +34,7 @@ public enum EIndex public Transform origin; // if not set, relative to parent public bool isValid = false; - private void OnNewPoses(params object[] args) + private void OnNewPoses(TrackedDevicePose_t[] poses) { if (index == EIndex.None) return; @@ -42,7 +42,6 @@ private void OnNewPoses(params object[] args) var i = (int)index; isValid = false; - var poses = (Valve.VR.TrackedDevicePose_t[])args[0]; if (poses.Length <= i) return; @@ -58,12 +57,8 @@ private void OnNewPoses(params object[] args) if (origin != null) { - pose = new SteamVR_Utils.RigidTransform(origin) * pose; - pose.pos.x *= origin.localScale.x; - pose.pos.y *= origin.localScale.y; - pose.pos.z *= origin.localScale.z; - transform.position = pose.pos; - transform.rotation = pose.rot; + transform.position = origin.transform.TransformPoint(pose.pos); + transform.rotation = origin.rotation * pose.rot; } else { @@ -72,6 +67,13 @@ private void OnNewPoses(params object[] args) } } + SteamVR_Events.Action newPosesAction; + + void Awake() + { + newPosesAction = SteamVR_Events.NewPosesAction(OnNewPoses); + } + void OnEnable() { var render = SteamVR_Render.instance; @@ -81,12 +83,12 @@ void OnEnable() return; } - SteamVR_Utils.Event.Listen("new_poses", OnNewPoses); + newPosesAction.enabled = true; } void OnDisable() { - SteamVR_Utils.Event.Remove("new_poses", OnNewPoses); + newPosesAction.enabled = false; isValid = false; } diff --git a/Assets/SteamVR/Scripts/SteamVR_Utils.cs b/Assets/SteamVR/Scripts/SteamVR_Utils.cs index 7f1d182..c1f5945 100644 --- a/Assets/SteamVR/Scripts/SteamVR_Utils.cs +++ b/Assets/SteamVR/Scripts/SteamVR_Utils.cs @@ -1,4 +1,4 @@ -//========= Copyright 2014, Valve Corporation, All rights reserved. =========== +//======= Copyright (c) Valve Corporation, All rights reserved. =============== // // Purpose: Utilities for working with SteamVR // @@ -11,44 +11,6 @@ public static class SteamVR_Utils { - public class Event - { - public delegate void Handler(params object[] args); - - public static void Listen(string message, Handler action) - { - var actions = listeners[message] as Handler; - if (actions != null) - { - listeners[message] = actions + action; - } - else - { - listeners[message] = action; - } - } - - public static void Remove(string message, Handler action) - { - var actions = listeners[message] as Handler; - if (actions != null) - { - listeners[message] = actions - action; - } - } - - public static void Send(string message, params object[] args) - { - var actions = listeners[message] as Handler; - if (actions != null) - { - actions(args); - } - } - - private static Hashtable listeners = new Hashtable(); - } - // this version does not clamp [0..1] public static Quaternion Slerp(Quaternion A, Quaternion B, float t) { @@ -387,79 +349,6 @@ public void Interpolate(RigidTransform to, float t) } } - public static Mesh CreateHiddenAreaMesh(HiddenAreaMesh_t src, VRTextureBounds_t bounds) - { - if (src.unTriangleCount == 0) - return null; - - var data = new float[src.unTriangleCount * 3 * 2]; //HmdVector2_t - Marshal.Copy(src.pVertexData, data, 0, data.Length); - - var vertices = new Vector3[src.unTriangleCount * 3 + 12]; - var indices = new int[src.unTriangleCount * 3 + 24]; - - var x0 = 2.0f * bounds.uMin - 1.0f; - var x1 = 2.0f * bounds.uMax - 1.0f; - var y0 = 2.0f * bounds.vMin - 1.0f; - var y1 = 2.0f * bounds.vMax - 1.0f; - - for (int i = 0, j = 0; i < src.unTriangleCount * 3; i++) - { - var x = Lerp(x0, x1, data[j++]); - var y = Lerp(y0, y1, data[j++]); - vertices[i] = new Vector3(x, y, 0.0f); - indices[i] = i; - } - - // Add border - var offset = (int)src.unTriangleCount * 3; - var iVert = offset; - vertices[iVert++] = new Vector3(-1, -1, 0); - vertices[iVert++] = new Vector3(x0, -1, 0); - vertices[iVert++] = new Vector3(-1, 1, 0); - vertices[iVert++] = new Vector3(x0, 1, 0); - vertices[iVert++] = new Vector3(x1, -1, 0); - vertices[iVert++] = new Vector3( 1, -1, 0); - vertices[iVert++] = new Vector3(x1, 1, 0); - vertices[iVert++] = new Vector3( 1, 1, 0); - vertices[iVert++] = new Vector3(x0, y0, 0); - vertices[iVert++] = new Vector3(x1, y0, 0); - vertices[iVert++] = new Vector3(x0, y1, 0); - vertices[iVert++] = new Vector3(x1, y1, 0); - - var iTri = offset; - indices[iTri++] = offset + 0; - indices[iTri++] = offset + 1; - indices[iTri++] = offset + 2; - indices[iTri++] = offset + 2; - indices[iTri++] = offset + 1; - indices[iTri++] = offset + 3; - indices[iTri++] = offset + 4; - indices[iTri++] = offset + 5; - indices[iTri++] = offset + 6; - indices[iTri++] = offset + 6; - indices[iTri++] = offset + 5; - indices[iTri++] = offset + 7; - indices[iTri++] = offset + 1; - indices[iTri++] = offset + 4; - indices[iTri++] = offset + 8; - indices[iTri++] = offset + 8; - indices[iTri++] = offset + 4; - indices[iTri++] = offset + 9; - indices[iTri++] = offset + 10; - indices[iTri++] = offset + 11; - indices[iTri++] = offset + 3; - indices[iTri++] = offset + 3; - indices[iTri++] = offset + 11; - indices[iTri++] = offset + 6; - - var mesh = new Mesh(); - mesh.vertices = vertices; - mesh.triangles = indices; - mesh.bounds = new Bounds( Vector3.zero, new Vector3( float.MaxValue, float.MaxValue, float.MaxValue ) ); // Prevent frustum culling from culling this mesh - return mesh; - } - public delegate object SystemFn(CVRSystem system, params object[] args); public static object CallSystemFn(SystemFn fn, params object[] args) @@ -480,13 +369,229 @@ public static object CallSystemFn(SystemFn fn, params object[] args) return result; } - public static void QueueEventOnRenderThread(int eventID) + public static void TakeStereoScreenshot(uint screenshotHandle, GameObject target, int cellSize, float ipd, ref string previewFilename, ref string VRFilename) { -#if (UNITY_5_0 || UNITY_5_1) - GL.IssuePluginEvent(eventID); -#elif (UNITY_5_2 || UNITY_5_3) - GL.IssuePluginEvent(SteamVR.Unity.GetRenderEventFunc(), eventID); -#endif + const int width = 4096; + const int height = width / 2; + const int halfHeight = height / 2; + + var texture = new Texture2D(width, height * 2, TextureFormat.ARGB32, false); + + var timer = new System.Diagnostics.Stopwatch(); + + Camera tempCamera = null; + + timer.Start(); + + var camera = target.GetComponent(); + if (camera == null) + { + if (tempCamera == null) + tempCamera = new GameObject().AddComponent(); + camera = tempCamera; + } + + // Render preview texture + const int previewWidth = 2048; + const int previewHeight = 2048; + var previewTexture = new Texture2D(previewWidth, previewHeight, TextureFormat.ARGB32, false); + var targetPreviewTexture = new RenderTexture(previewWidth, previewHeight, 24); + + var oldTargetTexture = camera.targetTexture; + var oldOrthographic = camera.orthographic; + var oldFieldOfView = camera.fieldOfView; + var oldAspect = camera.aspect; + var oldstereoTargetEye = camera.stereoTargetEye; + camera.stereoTargetEye = StereoTargetEyeMask.None; + camera.fieldOfView = 60.0f; + camera.orthographic = false; + camera.targetTexture = targetPreviewTexture; + camera.aspect = 1.0f; + camera.Render(); + + // copy preview texture + RenderTexture.active = targetPreviewTexture; + previewTexture.ReadPixels(new Rect(0, 0, targetPreviewTexture.width, targetPreviewTexture.height), 0, 0); + RenderTexture.active = null; + camera.targetTexture = null; + Object.DestroyImmediate(targetPreviewTexture); + + var fx = camera.gameObject.AddComponent(); + + var oldPosition = target.transform.localPosition; + var oldRotation = target.transform.localRotation; + var basePosition = target.transform.position; + var baseRotation = Quaternion.Euler(0, target.transform.rotation.eulerAngles.y, 0); + + var transform = camera.transform; + + int vTotal = halfHeight / cellSize; + float dv = 90.0f / vTotal; // vertical degrees per segment + float dvHalf = dv / 2.0f; + + var targetTexture = new RenderTexture(cellSize, cellSize, 24); + targetTexture.wrapMode = TextureWrapMode.Clamp; + targetTexture.antiAliasing = 8; + + camera.fieldOfView = dv; + camera.orthographic = false; + camera.targetTexture = targetTexture; + camera.aspect = oldAspect; + camera.stereoTargetEye = StereoTargetEyeMask.None; + + // Render sections of a sphere using a rectilinear projection + // and resample using a sphereical projection into a single panorama + // texture per eye. We break into sections in order to keep the eye + // separation similar around the sphere. Rendering alternates between + // top and bottom sections, sweeping horizontally around the sphere, + // alternating left and right eyes. + for (int v = 0; v < vTotal; v++) + { + var pitch = 90.0f - (v * dv) - dvHalf; + var uTotal = width / targetTexture.width; + var du = 360.0f / uTotal; // horizontal degrees per segment + var duHalf = du / 2.0f; + + var vTarget = v * halfHeight / vTotal; + + for (int i = 0; i < 2; i++) // top, bottom + { + if (i == 1) + { + pitch = -pitch; + vTarget = height - vTarget - cellSize; + } + + for (int u = 0; u < uTotal; u++) + { + var yaw = -180.0f + (u * du) + duHalf; + + var uTarget = u * width / uTotal; + + var vTargetOffset = 0; + var xOffset = -ipd / 2 * Mathf.Cos(pitch * Mathf.Deg2Rad); + + for (int j = 0; j < 2; j++) // left, right + { + if (j == 1) + { + vTargetOffset = height; + xOffset = -xOffset; + } + + var offset = baseRotation * Quaternion.Euler(0, yaw, 0) * new Vector3(xOffset, 0, 0); + transform.position = basePosition + offset; + + var direction = Quaternion.Euler(pitch, yaw, 0.0f); + transform.rotation = baseRotation * direction; + + // vector pointing to center of this section + var N = direction * Vector3.forward; + + // horizontal span of this section in degrees + var phi0 = yaw - (du / 2); + var phi1 = phi0 + du; + + // vertical span of this section in degrees + var theta0 = pitch + (dv / 2); + var theta1 = theta0 - dv; + + var midPhi = (phi0 + phi1) / 2; + var baseTheta = Mathf.Abs(theta0) < Mathf.Abs(theta1) ? theta0 : theta1; + + // vectors pointing to corners of image closes to the equator + var V00 = Quaternion.Euler(baseTheta, phi0, 0.0f) * Vector3.forward; + var V01 = Quaternion.Euler(baseTheta, phi1, 0.0f) * Vector3.forward; + + // vectors pointing to top and bottom midsection of image + var V0M = Quaternion.Euler(theta0, midPhi, 0.0f) * Vector3.forward; + var V1M = Quaternion.Euler(theta1, midPhi, 0.0f) * Vector3.forward; + + // intersection points for each of the above + var P00 = V00 / Vector3.Dot(V00, N); + var P01 = V01 / Vector3.Dot(V01, N); + var P0M = V0M / Vector3.Dot(V0M, N); + var P1M = V1M / Vector3.Dot(V1M, N); + + // calculate basis vectors for plane + var P00_P01 = P01 - P00; + var P0M_P1M = P1M - P0M; + + var uMag = P00_P01.magnitude; + var vMag = P0M_P1M.magnitude; + + var uScale = 1.0f / uMag; + var vScale = 1.0f / vMag; + + var uAxis = P00_P01 * uScale; + var vAxis = P0M_P1M * vScale; + + // update material constant buffer + fx.Set(N, phi0, phi1, theta0, theta1, + uAxis, P00, uScale, + vAxis, P0M, vScale); + + camera.aspect = uMag / vMag; + camera.Render(); + + RenderTexture.active = targetTexture; + texture.ReadPixels(new Rect(0, 0, targetTexture.width, targetTexture.height), uTarget, vTarget + vTargetOffset); + RenderTexture.active = null; + } + + // Update progress + var progress = (float)( v * ( uTotal * 2.0f ) + u + i*uTotal) / (float)(vTotal * ( uTotal * 2.0f ) ); + OpenVR.Screenshots.UpdateScreenshotProgress(screenshotHandle, progress); + } + } + } + + // 100% flush + OpenVR.Screenshots.UpdateScreenshotProgress(screenshotHandle, 1.0f); + + // Save textures to disk. + // Add extensions + previewFilename += ".png"; + VRFilename += ".png"; + + // Preview + previewTexture.Apply(); + System.IO.File.WriteAllBytes(previewFilename, previewTexture.EncodeToPNG()); + + // VR + texture.Apply(); + System.IO.File.WriteAllBytes(VRFilename, texture.EncodeToPNG()); + + // Cleanup. + if (camera != tempCamera) + { + camera.targetTexture = oldTargetTexture; + camera.orthographic = oldOrthographic; + camera.fieldOfView = oldFieldOfView; + camera.aspect = oldAspect; + camera.stereoTargetEye = oldstereoTargetEye; + + target.transform.localPosition = oldPosition; + target.transform.localRotation = oldRotation; + } + else + { + tempCamera.targetTexture = null; + } + + Object.DestroyImmediate(targetTexture); + Object.DestroyImmediate(fx); + + timer.Stop(); + Debug.Log(string.Format("Screenshot took {0} seconds.", timer.Elapsed)); + + if (tempCamera != null) + { + Object.DestroyImmediate(tempCamera.gameObject); + } + + Object.DestroyImmediate(previewTexture); + Object.DestroyImmediate(texture); } } From 33f858f5d4494ca23d833ad1b226ed71877bdad3 Mon Sep 17 00:00:00 2001 From: Patrick Mahoney Date: Thu, 1 Jun 2017 22:30:27 -0400 Subject: [PATCH 6/9] update .meta files and remove some shaders --- Assets/Plugins/x86/libopenvr_api.so.meta | 53 ------------- Assets/Plugins/x86/openvr_api.dll.meta | 30 -------- Assets/Plugins/x86_64/libopenvr_api.so.meta | 76 ------------------- Assets/Plugins/x86_64/openvr_api.dll.meta | 30 -------- Assets/SteamVR.meta | 2 +- Assets/SteamVR/Editor.meta | 5 +- Assets/SteamVR/Prefabs.meta | 5 +- Assets/SteamVR/Resources.meta | 5 +- .../Resources/SteamVR_Blit.shader.meta | 9 --- .../SteamVR/Resources/SteamVR_BlitFlip.shader | 40 ---------- .../Resources/SteamVR_BlitFlip.shader.meta | 9 --- .../Resources/SteamVR_HiddenArea.shader | 24 ------ .../Resources/SteamVR_HiddenArea.shader.meta | 9 --- Assets/SteamVR/Scripts.meta | 5 +- .../Scripts/SteamVR_ControllerManager.cs.meta | 6 +- .../SteamVR/Scripts/SteamVR_Overlay.cs.meta | 3 - Assets/SteamVR/Textures.meta | 5 +- 17 files changed, 9 insertions(+), 307 deletions(-) delete mode 100644 Assets/Plugins/x86/libopenvr_api.so.meta delete mode 100644 Assets/Plugins/x86/openvr_api.dll.meta delete mode 100644 Assets/Plugins/x86_64/libopenvr_api.so.meta delete mode 100644 Assets/Plugins/x86_64/openvr_api.dll.meta delete mode 100644 Assets/SteamVR/Resources/SteamVR_Blit.shader.meta delete mode 100644 Assets/SteamVR/Resources/SteamVR_BlitFlip.shader delete mode 100644 Assets/SteamVR/Resources/SteamVR_BlitFlip.shader.meta delete mode 100644 Assets/SteamVR/Resources/SteamVR_HiddenArea.shader delete mode 100644 Assets/SteamVR/Resources/SteamVR_HiddenArea.shader.meta diff --git a/Assets/Plugins/x86/libopenvr_api.so.meta b/Assets/Plugins/x86/libopenvr_api.so.meta deleted file mode 100644 index dc09699..0000000 --- a/Assets/Plugins/x86/libopenvr_api.so.meta +++ /dev/null @@ -1,53 +0,0 @@ -fileFormatVersion: 2 -guid: 64b48e8bdcc9e0541aa902936def9faa -timeCreated: 1463158122 -licenseType: Store -PluginImporter: - serializedVersion: 1 - iconMap: {} - executionOrder: {} - isPreloaded: 0 - platformData: - Any: - enabled: 1 - settings: {} - Editor: - enabled: 0 - settings: - CPU: x86 - DefaultValueInitialized: true - Linux: - enabled: 1 - settings: - CPU: x86 - Linux64: - enabled: 0 - settings: - CPU: None - LinuxUniversal: - enabled: 0 - settings: - CPU: x86 - OSXIntel: - enabled: 1 - settings: - CPU: AnyCPU - OSXIntel64: - enabled: 0 - settings: - CPU: None - OSXUniversal: - enabled: 0 - settings: - CPU: x86 - Win: - enabled: 1 - settings: - CPU: AnyCPU - Win64: - enabled: 0 - settings: - CPU: None - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Plugins/x86/openvr_api.dll.meta b/Assets/Plugins/x86/openvr_api.dll.meta deleted file mode 100644 index 647b8d2..0000000 --- a/Assets/Plugins/x86/openvr_api.dll.meta +++ /dev/null @@ -1,30 +0,0 @@ -fileFormatVersion: 2 -guid: 73d5d79effb76f84491567f3c473b810 -timeCreated: 1429123045 -licenseType: Store -PluginImporter: - serializedVersion: 1 - iconMap: {} - executionOrder: {} - isPreloaded: 0 - platformData: - Any: - enabled: 0 - settings: {} - Editor: - enabled: 1 - settings: - CPU: x86 - DefaultValueInitialized: true - OS: Windows - Win: - enabled: 1 - settings: - CPU: AnyCPU - Win64: - enabled: 1 - settings: - CPU: None - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Plugins/x86_64/libopenvr_api.so.meta b/Assets/Plugins/x86_64/libopenvr_api.so.meta deleted file mode 100644 index a25cb25..0000000 --- a/Assets/Plugins/x86_64/libopenvr_api.so.meta +++ /dev/null @@ -1,76 +0,0 @@ -fileFormatVersion: 2 -guid: d4aa343e31277cd45b2c3096d3318b90 -timeCreated: 1457668425 -licenseType: Store -PluginImporter: - serializedVersion: 1 - iconMap: {} - executionOrder: {} - isPreloaded: 0 - platformData: - Android: - enabled: 0 - settings: - CPU: AnyCPU - Any: - enabled: 0 - settings: {} - Editor: - enabled: 0 - settings: - CPU: x86_64 - DefaultValueInitialized: true - OS: AnyOS - Linux: - enabled: 1 - settings: - CPU: None - Linux64: - enabled: 1 - settings: - CPU: x86_64 - LinuxUniversal: - enabled: 1 - settings: - CPU: x86_64 - OSXIntel: - enabled: 1 - settings: - CPU: None - OSXIntel64: - enabled: 1 - settings: - CPU: None - OSXUniversal: - enabled: 1 - settings: - CPU: None - WP8: - enabled: 0 - settings: - CPU: AnyCPU - DontProcess: False - PlaceholderPath: - Win: - enabled: 1 - settings: - CPU: None - Win64: - enabled: 1 - settings: - CPU: AnyCPU - WindowsStoreApps: - enabled: 0 - settings: - CPU: AnyCPU - DontProcess: False - PlaceholderPath: - SDK: AnySDK - iOS: - enabled: 0 - settings: - CompileFlags: - FrameworkDependencies: - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Plugins/x86_64/openvr_api.dll.meta b/Assets/Plugins/x86_64/openvr_api.dll.meta deleted file mode 100644 index 697d221..0000000 --- a/Assets/Plugins/x86_64/openvr_api.dll.meta +++ /dev/null @@ -1,30 +0,0 @@ -fileFormatVersion: 2 -guid: 9d42e4d46d897b648a1d6ed58a18e8a6 -timeCreated: 1429123045 -licenseType: Store -PluginImporter: - serializedVersion: 1 - iconMap: {} - executionOrder: {} - isPreloaded: 0 - platformData: - Any: - enabled: 0 - settings: {} - Editor: - enabled: 1 - settings: - CPU: x86_64 - DefaultValueInitialized: true - OS: Windows - Win: - enabled: 1 - settings: - CPU: None - Win64: - enabled: 1 - settings: - CPU: AnyCPU - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/SteamVR.meta b/Assets/SteamVR.meta index a17b64e..7e4ea13 100644 --- a/Assets/SteamVR.meta +++ b/Assets/SteamVR.meta @@ -1,7 +1,7 @@ fileFormatVersion: 2 guid: f0032bd9499af5e4aa85ea41615843a0 folderAsset: yes -timeCreated: 1465633285 +timeCreated: 1496367098 licenseType: Free DefaultImporter: userData: diff --git a/Assets/SteamVR/Editor.meta b/Assets/SteamVR/Editor.meta index e2f41ed..90b104c 100644 --- a/Assets/SteamVR/Editor.meta +++ b/Assets/SteamVR/Editor.meta @@ -1,9 +1,6 @@ fileFormatVersion: 2 -guid: 941dde9a9ca65d74489c024e76c8bfe8 +guid: c33af0785775d7548b22541da37936fe folderAsset: yes -timeCreated: 1465633285 -licenseType: Free DefaultImporter: userData: assetBundleName: - assetBundleVariant: diff --git a/Assets/SteamVR/Prefabs.meta b/Assets/SteamVR/Prefabs.meta index b857624..3cc8acb 100644 --- a/Assets/SteamVR/Prefabs.meta +++ b/Assets/SteamVR/Prefabs.meta @@ -1,9 +1,6 @@ fileFormatVersion: 2 -guid: f4d909dcb749c45459770e058a2efac3 +guid: 3e2543c4beea3eb4e9ea1e02a4bc2df2 folderAsset: yes -timeCreated: 1465633285 -licenseType: Free DefaultImporter: userData: assetBundleName: - assetBundleVariant: diff --git a/Assets/SteamVR/Resources.meta b/Assets/SteamVR/Resources.meta index de3d65c..32789b2 100644 --- a/Assets/SteamVR/Resources.meta +++ b/Assets/SteamVR/Resources.meta @@ -1,9 +1,6 @@ fileFormatVersion: 2 -guid: 128449277d8f96b46a3816056eee4067 +guid: 40af2f692be87864ba388a27fcac9ed8 folderAsset: yes -timeCreated: 1465633285 -licenseType: Free DefaultImporter: userData: assetBundleName: - assetBundleVariant: diff --git a/Assets/SteamVR/Resources/SteamVR_Blit.shader.meta b/Assets/SteamVR/Resources/SteamVR_Blit.shader.meta deleted file mode 100644 index 98528ca..0000000 --- a/Assets/SteamVR/Resources/SteamVR_Blit.shader.meta +++ /dev/null @@ -1,9 +0,0 @@ -fileFormatVersion: 2 -guid: 021228b76f139394fae4afb56cd6bf29 -timeCreated: 1465931332 -licenseType: Free -ShaderImporter: - defaultTextures: [] - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/SteamVR/Resources/SteamVR_BlitFlip.shader b/Assets/SteamVR/Resources/SteamVR_BlitFlip.shader deleted file mode 100644 index 00d9343..0000000 --- a/Assets/SteamVR/Resources/SteamVR_BlitFlip.shader +++ /dev/null @@ -1,40 +0,0 @@ -Shader "Custom/SteamVR_BlitFlip" { - Properties { _MainTex ("Base (RGB)", 2D) = "white" {} } - - CGINCLUDE - - #include "UnityCG.cginc" - - sampler2D _MainTex; - - struct v2f { - float4 pos : SV_POSITION; - float2 tex : TEXCOORD0; - }; - - v2f vert(appdata_base v) { - v2f o; - o.pos = mul(UNITY_MATRIX_MVP, v.vertex); - o.tex.x = v.texcoord.x; - o.tex.y = 1 - v.texcoord.y; - return o; - } - - float4 frag(v2f i) : COLOR { - return tex2D(_MainTex, i.tex); - } - - ENDCG - - SubShader { - Pass { - ZTest Always Cull Off ZWrite Off - Fog { Mode Off } - - CGPROGRAM - #pragma vertex vert - #pragma fragment frag - ENDCG - } - } -} diff --git a/Assets/SteamVR/Resources/SteamVR_BlitFlip.shader.meta b/Assets/SteamVR/Resources/SteamVR_BlitFlip.shader.meta deleted file mode 100644 index 1b6b751..0000000 --- a/Assets/SteamVR/Resources/SteamVR_BlitFlip.shader.meta +++ /dev/null @@ -1,9 +0,0 @@ -fileFormatVersion: 2 -guid: 7f38d614fcfa3b541bde2acda92af7ca -timeCreated: 1465931347 -licenseType: Free -ShaderImporter: - defaultTextures: [] - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/SteamVR/Resources/SteamVR_HiddenArea.shader b/Assets/SteamVR/Resources/SteamVR_HiddenArea.shader deleted file mode 100644 index 31e62fb..0000000 --- a/Assets/SteamVR/Resources/SteamVR_HiddenArea.shader +++ /dev/null @@ -1,24 +0,0 @@ -Shader "Custom/SteamVR_HiddenArea" { - - CGINCLUDE - - #include "UnityCG.cginc" - - float4 vert(appdata_base v) : SV_POSITION { return v.vertex; } - float4 frag(float4 v : SV_POSITION) : COLOR { return float4(0,0,0,0); } - - ENDCG - - SubShader { - Tags { "Queue" = "Background" } - Pass { - ZTest Always Cull Off ZWrite On - Fog { Mode Off } - - CGPROGRAM - #pragma vertex vert - #pragma fragment frag - ENDCG - } - } -} diff --git a/Assets/SteamVR/Resources/SteamVR_HiddenArea.shader.meta b/Assets/SteamVR/Resources/SteamVR_HiddenArea.shader.meta deleted file mode 100644 index 0715bf0..0000000 --- a/Assets/SteamVR/Resources/SteamVR_HiddenArea.shader.meta +++ /dev/null @@ -1,9 +0,0 @@ -fileFormatVersion: 2 -guid: 7687f525efe9f4b449dfe5a7fe0b7c8e -timeCreated: 1428972938 -licenseType: Store -ShaderImporter: - defaultTextures: [] - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/SteamVR/Scripts.meta b/Assets/SteamVR/Scripts.meta index 3e07a77..1dd1d81 100644 --- a/Assets/SteamVR/Scripts.meta +++ b/Assets/SteamVR/Scripts.meta @@ -1,9 +1,6 @@ fileFormatVersion: 2 -guid: 95553d89c282bf141b499a612fd87915 +guid: d88af1b1098a33a42bc43c910c864102 folderAsset: yes -timeCreated: 1465633285 -licenseType: Free DefaultImporter: userData: assetBundleName: - assetBundleVariant: diff --git a/Assets/SteamVR/Scripts/SteamVR_ControllerManager.cs.meta b/Assets/SteamVR/Scripts/SteamVR_ControllerManager.cs.meta index cfd6376..8f4c60b 100644 --- a/Assets/SteamVR/Scripts/SteamVR_ControllerManager.cs.meta +++ b/Assets/SteamVR/Scripts/SteamVR_ControllerManager.cs.meta @@ -1,7 +1,7 @@ fileFormatVersion: 2 -guid: 1edaba0e604d1244a9245cd9a8306816 -timeCreated: 1465931117 -licenseType: Free +guid: e3b47c2980b93bc48844a54641dab5b8 +timeCreated: 1437430318 +licenseType: Store MonoImporter: serializedVersion: 2 defaultReferences: [] diff --git a/Assets/SteamVR/Scripts/SteamVR_Overlay.cs.meta b/Assets/SteamVR/Scripts/SteamVR_Overlay.cs.meta index e2c9383..21fe1d6 100644 --- a/Assets/SteamVR/Scripts/SteamVR_Overlay.cs.meta +++ b/Assets/SteamVR/Scripts/SteamVR_Overlay.cs.meta @@ -1,7 +1,5 @@ fileFormatVersion: 2 guid: 46fe9e0b23166454c8cb73040321d78c -timeCreated: 1466224777 -licenseType: Free MonoImporter: serializedVersion: 2 defaultReferences: [] @@ -9,4 +7,3 @@ MonoImporter: icon: {instanceID: 0} userData: assetBundleName: - assetBundleVariant: diff --git a/Assets/SteamVR/Textures.meta b/Assets/SteamVR/Textures.meta index 043ec8d..04298ac 100644 --- a/Assets/SteamVR/Textures.meta +++ b/Assets/SteamVR/Textures.meta @@ -1,9 +1,6 @@ fileFormatVersion: 2 -guid: 003cb17d6edd28b4d88df6f35f9c03ab +guid: abfc00e0350ad744083849e2d7ae06ee folderAsset: yes -timeCreated: 1465633285 -licenseType: Free DefaultImporter: userData: assetBundleName: - assetBundleVariant: From 142791b044f066547a1efbc102ffa3304c3605fe Mon Sep 17 00:00:00 2001 From: Patrick Mahoney Date: Thu, 1 Jun 2017 22:31:31 -0400 Subject: [PATCH 7/9] just the readme.txt --- Assets/SteamVR/readme.txt | 113 ++++++++++++++++++++++++++++---------- 1 file changed, 84 insertions(+), 29 deletions(-) diff --git a/Assets/SteamVR/readme.txt b/Assets/SteamVR/readme.txt index e0d4a56..b0c5d2c 100644 --- a/Assets/SteamVR/readme.txt +++ b/Assets/SteamVR/readme.txt @@ -1,37 +1,101 @@ -This is a stripped down version of the Unity Steam VR plugin v1.1 that includes just the core functionality required to display Overlays. +SteamVR plugin for Unity - v1.2.1 +Copyright (c) Valve Corporation, All rights reserved. -Please see https://www.assetstore.unity3d.com/en/#!/content/32647 for additional information. +Quickstart: +To use, simply add the SteamVR_Camera script to your Camera object(s). Everything else gets set up at +runtime. See the included quickstart guide for more details. -The following is the original text of this ReadMe, though many features have been stripped from this version. +Requirements: +The SteamVR runtime must be installed. This can be found in Steam under Tools. +Changes for v1.2.1: +* Updated to SteamVR runtime v1485823399 and SDK version 1.0.6. +* Switched SteamVR_Events.SystemAction from using strings to specify event type over to their associated enum values. +* Fixed an issue with using WWW in static constructors. +* Added Unity Preferences for SteamVR to allow disabling automatic enabling of native OpenVR support in Unity 5.4 or newer. +https://github.com/ValveSoftware/steamvr_unity_plugin/issues/8 +https://github.com/ValveSoftware/steamvr_unity_plugin/pull/9 +* Added UNITY_SHADER_NO_UPGRADE to all shaders to avoid log spam in later versions of Unity for issues that have already been fixed but the compiler isn't able to detect. +* Specified Vulkan support for Interaction System shaders. +* Fix for crash in Interaction_Example selecting BowPickup: +https://github.com/ValveSoftware/steamvr_unity_plugin/issues/4 -SteamVR plugin for Unity - v1.1.0 -Copyright 2014-2016, Valve Corporation, All rights reserved. +* Cleaned up unused fields: +https://github.com/ValveSoftware/steamvr_unity_plugin/issues/2 +* Updated Interaction System's LinearDrive to initialize using linearMapping.value. +https://github.com/ValveSoftware/steamvr_unity_plugin/pull/5 -Quickstart: +* Updated Interaction System documetation to fix a few errors. -To use, simply add the SteamVR_Camera script to your Camera object(s). Everything else gets set up at -runtime. See the included quickstart guide for more details. +* Added an icon for all Interaction System scripts. +* Fixes for SteamVR on Linux. -Requirements: -The SteamVR runtime must be installed. This can be found in Steam under Tools. +Changes for v1.2.0: + +* Updated to SteamVR runtime v1481926580 and SDK version 1.0.5. + +* Replaced SteamVR_Utils.Event with SteamVR_Events. to avoid runtime memory allocation associated with use of params object[] args. + +* Added SteamVR_Events.Action to make it easy to wrap callbacks to avoid memory allocation when components are frequently enabled/disabled at runtime. + +* Fixed other miscellaneous runtime memory allocation in SteamVR_Render and SteamVR_RenderModels. (Suggestions by unity3d user @8bitgoose.) + +* Integrated fix for SteamVR_LaserPointer direction (from github user @fredsa). + +* Integrated fixes and comments for SteamVR_Teleporter (from github user @natewinck). + +* Removed SteamVR_Status and SteamVR_StatusText as they were using SteamVR_Utils.Event with generic strings which is no longer allowed. + +* Added SteamVR_Controller.assignAllBeforeIdentified (to allow controller to be assigned before identified as left vs right). Suggested by github user @chrwoizi. -The plugin currently only supports Windows / DX11. +* Added SteamVR_Controller.UpdateTargets public interface. This allows spawning the component at runtime. Suggested by github user @demonixis. + +* Fixed bug with SteamVR_TrackedObject when specifying origin. Suggested by github user @fredsa. + +* Fixed issue with head camera reference in SteamVR_Camera. Suggested by github user @pedrofe. + +Known issues: + +* The current beta version of Unity 5.6 breaks the normal operation of the SteamVR_UpdatePoses component (required for tracked controllers). +To work around this in the meantime, you will need to manually add the SteamVR_UpdatePoses component to your main camera. + + +Changes for v1.1.1: + +* Updated to SteamVR runtime v1467410709 and SDK version 1.0.2. + +* Updated Copyright notice. + +* Added SteamVR_TrackedCamera for accessing tracked camera video stream and poses. + +* Added SteamVR_TestTrackedCamera scene and associated script to demonstrate how to use SteamVR_TrackedCamera. + +* Fix for SteamVR_Fade shader to account for changes in Unity 5.4. + +* SteamVR_GameView will now use the compositor's mirror texture to render the companion window (pre-Unity 5.4 only). + +* Renamed SteamVR_LoadLevel 'externalApp' to 'internalProcess' to reflect actual functionality. + +* Fixed issue with SteamVR_PlayArea material loading due to changes in Unity 5.4. + +* Added Screenshot support handling for stereo panoramas generation. + +* Removed code that was setting Time.maximumDeltaTime as this was causing issues. Changes for v1.1.0: @@ -328,8 +392,7 @@ up and running quickly and easily. You are encouraged to modify these to suit y and provide feedback at http://steamcommunity.com/app/250820 or http://steamcommunity.com/app/358720/discussions Assets/SteamVR/Scenes/example.unity - A sample scene demonstrating the functionality provided by this plugin. -This also shows you how to set up a separate camera for rendering gui elements, and handle events to display -hmd status. +This also shows you how to set up a separate camera for rendering gui elements. Details: @@ -379,8 +442,7 @@ Prefabs: SteamVR_Camera component added to it, and the Expand button clicked. It also includes a full set of Tracked Devices which will display and follow any connected tracked devices (e.g. controllers, base stations and cameras). -[Status] - This is a set of components for providing various status info. You can add it to your scene to get -notifications for leaving the tracking bounds, et cetera. It also includes an escape menu for tweaking options. +[Status] - The prefab is for demonstration purposes only. It adds an escape menu to your scene. Note: It uses the SteamVR_Overlay component, which is rather expensive rendering-wise. [SteamVR] - This object controls some global settings for SteamVR, most notably Tracking Space. Legacy projects @@ -434,28 +496,21 @@ and right culling mask to use to control rendering per eye if necessary. Events: -SteamVR_Camera fires off several events. These can be handled by registering for them through -SteamVR_Utils.Event.Listen. Be sure to remove your handler when no longer needed. The best pattern is to -Listen and Remove in OnEnable and OnDisable respectively. +SteamVR fires off several events. These can be handled by registering for them through +SteamVR_Events..Listen. Be sure to remove your handler when no longer needed. +The best pattern is to Listen and Remove in OnEnable and OnDisable respectively. -"initializing" - This event is sent when the hmd's tracking status changes to or from Unitialized. +Initializing - This event is sent when the hmd's tracking status changes to or from Unitialized. -"calibrating" - This event is sent when starting or stopping calibration with the new state. +Calibrating - This event is sent when starting or stopping calibration with the new state. -"out_of_range" - This event is sent when losing or reacquiring absolute positional tracking. This will +OutOfRange - This event is sent when losing or reacquiring absolute positional tracking. This will never fire for the Rift DK1 since it does not have positional tracking. For camera based trackers, this happens when the hmd exits and enters the camera's view. -"device_connected" - This event is sent when devices are connected or disconnected. The device index is passed +DeviceConnected - This event is sent when devices are connected or disconnected. The device index is passed as the first argument, and the connected status (true / false) as the second argument. -Feel free to leverage this system to fire off events of your own. SteamVR_Utils.Event.Send takes any number -of parameters, and passes them on to all registered callbacks. - -A helper class has been included called SteamVR_Status which leverages these events to display hmd status to -the user. Examples of this can be found in the example scene. SteamVR_StatusText specifically, leverages this -functionality to wrap up GUIText display, overriding SetAlpha. - Keybindings (if using the [Status] prefab): From d9d8fffeb7d828352f01c04dcaefd64450210513 Mon Sep 17 00:00:00 2001 From: Patrick Mahoney Date: Thu, 1 Jun 2017 22:43:27 -0400 Subject: [PATCH 8/9] update every other script that was tracked --- Assets/Plugins/x86/libopenvr_api.so | Bin 347110 -> 0 bytes Assets/Plugins/x86/openvr_api.dll | Bin 271168 -> 0 bytes Assets/Plugins/x86_64/libopenvr_api.so | Bin 379046 -> 0 bytes Assets/Plugins/x86_64/openvr_api.dll | Bin 318272 -> 0 bytes HeadlessOverlayToolkit.sln | 32 +- Library/AssetImportState | 2 +- Library/AssetServerCacheV3 | Bin 4756 -> 4756 bytes Library/CurrentLayout.dwlt | Bin 53940 -> 21424 bytes Library/EditorUserBuildSettings.asset | Bin 4329 -> 4356 bytes Library/LastSceneManagerSetup.txt | 2 +- Library/ProjectSettings.asset | Bin 38505 -> 52566 bytes .../Assembly-CSharp-Editor.dll | Bin 20480 -> 34304 bytes .../Assembly-CSharp-Editor.dll.mdb | Bin 3010 -> 8089 bytes .../Assembly-CSharp-firstpass.dll | Bin 108032 -> 141312 bytes .../Assembly-CSharp-firstpass.dll.mdb | Bin 11882 -> 16700 bytes Library/ScriptAssemblies/Assembly-CSharp.dll | Bin 65024 -> 253440 bytes .../ScriptAssemblies/Assembly-CSharp.dll.mdb | Bin 19784 -> 115176 bytes .../ScriptAssemblies/BuiltinAssemblies.stamp | 4 +- Library/ScriptMapper | Bin 11297 -> 12529 bytes Library/ShaderCache.db | Bin 3072 -> 3072 bytes .../SyntaxTree.VisualStudio.Unity.Bridge.dll | Bin 493848 -> 493328 bytes .../UnityEditor.Advertisements.dll | Bin 8704 -> 8192 bytes .../UnityEditor.EditorTestsRunner.dll | Bin 52224 -> 0 bytes .../UnityEditor.EditorTestsRunner.xml | 8 - .../UnityAssemblies/UnityEditor.Graphs.dll | Bin 217088 -> 232448 bytes .../UnityEditor.Networking.dll | Bin 64512 -> 69120 bytes .../UnityEditor.TreeEditor.dll | Bin 130048 -> 136192 bytes Library/UnityAssemblies/UnityEditor.UI.dll | Bin 78336 -> 81408 bytes Library/UnityAssemblies/UnityEditor.UI.xml | 5 + ...ityEditor.WindowsStandalone.Extensions.dll | Bin 8704 -> 11264 bytes Library/UnityAssemblies/UnityEditor.dll | Bin 3795968 -> 4815872 bytes Library/UnityAssemblies/UnityEditor.xml | 10447 ++- .../UnityEngine.Networking.dll | Bin 233984 -> 257024 bytes .../UnityEngine.Networking.xml | 590 +- Library/UnityAssemblies/UnityEngine.UI.dll | Bin 222208 -> 248832 bytes Library/UnityAssemblies/UnityEngine.UI.xml | 349 +- Library/UnityAssemblies/UnityEngine.dll | Bin 1110528 -> 1541120 bytes Library/UnityAssemblies/UnityEngine.xml | 58450 ++++++++++------ Library/UnityAssemblies/nunit.framework.dll | Bin 139264 -> 327680 bytes Library/UnityAssemblies/nunit.framework.xml | 19178 +++-- Library/UnityAssemblies/version.txt | 52 +- Library/assetDatabase3 | Bin 1567372 -> 3454332 bytes Library/expandedItems | Bin 7680 -> 4224 bytes .../00/00000000000000002000000000000000 | Bin 4321 -> 4321 bytes .../00/00000000000000002000000000000000.info | Bin 554 -> 579 bytes .../00/00000000000000003000000000000000 | Bin 4313 -> 4313 bytes .../00/00000000000000003000000000000000.info | Bin 552 -> 577 bytes .../00/00000000000000004000000000000000 | Bin 4325 -> 4325 bytes .../00/00000000000000004000000000000000.info | Bin 557 -> 582 bytes .../00/00000000000000004100000000000000 | Bin 4321 -> 4321 bytes .../00/00000000000000004100000000000000.info | Bin 554 -> 579 bytes .../00/00000000000000005000000000000000 | Bin 4313 -> 4313 bytes .../00/00000000000000005000000000000000.info | Bin 33337 -> 33362 bytes .../00/00000000000000005100000000000000 | Bin 4329 -> 4329 bytes .../00/00000000000000005100000000000000.info | Bin 559 -> 584 bytes .../00/00000000000000006000000000000000 | Bin 4321 -> 4321 bytes .../00/00000000000000006000000000000000.info | Bin 554 -> 579 bytes .../00/00000000000000006100000000000000 | Bin 4325 -> 4325 bytes .../00/00000000000000006100000000000000.info | Bin 558 -> 583 bytes .../00/00000000000000007000000000000000 | Bin 4321 -> 4321 bytes .../00/00000000000000007000000000000000.info | Bin 553 -> 578 bytes .../00/00000000000000007100000000000000 | Bin 4337 -> 4337 bytes .../00/00000000000000007100000000000000.info | Bin 561 -> 586 bytes .../00/00000000000000008000000000000000 | Bin 4325 -> 4325 bytes .../00/00000000000000008000000000000000.info | Bin 557 -> 582 bytes .../00/00000000000000008100000000000000 | Bin 4325 -> 0 bytes .../00/00000000000000008100000000000000.info | Bin 558 -> 0 bytes .../00/00000000000000009000000000000000 | Bin 4325 -> 4325 bytes .../00/00000000000000009000000000000000.info | Bin 557 -> 582 bytes .../00/0000000000000000a000000000000000 | Bin 4325 -> 4325 bytes .../00/0000000000000000a000000000000000.info | Bin 556 -> 581 bytes .../00/0000000000000000a100000000000000 | Bin 4337 -> 4337 bytes .../00/0000000000000000a100000000000000.info | Bin 562 -> 587 bytes .../00/0000000000000000b000000000000000 | Bin 4337 -> 4337 bytes .../00/0000000000000000b000000000000000.info | Bin 561 -> 586 bytes .../00/0000000000000000c000000000000000 | Bin 4325 -> 4325 bytes .../00/0000000000000000c000000000000000.info | Bin 556 -> 581 bytes .../00/003cb17d6edd28b4d88df6f35f9c03ab | Bin 4301 -> 0 bytes .../00/003cb17d6edd28b4d88df6f35f9c03ab.info | Bin 581 -> 0 bytes .../00/005ed5a6df2f5ff468efd6497d37fefa | Bin 4276 -> 4284 bytes .../00/005ed5a6df2f5ff468efd6497d37fefa.info | Bin 914 -> 939 bytes .../02/021228b76f139394fae4afb56cd6bf29 | Bin 12814 -> 0 bytes .../02/021228b76f139394fae4afb56cd6bf29.info | Bin 621 -> 0 bytes .../09/09db43b3b77bf744287ba587fea02f8b | Bin 1012760 -> 1012992 bytes .../09/09db43b3b77bf744287ba587fea02f8b.info | Bin 15597 -> 15577 bytes .../0f/0f799ebe0ba5b864da2f39fb010ff53f | Bin 4293 -> 4293 bytes .../0f/0f799ebe0ba5b864da2f39fb010ff53f.info | Bin 569 -> 594 bytes .../12/128449277d8f96b46a3816056eee4067 | Bin 4305 -> 0 bytes .../12/128449277d8f96b46a3816056eee4067.info | Bin 583 -> 0 bytes .../1b/1bf3d2921db44a045acc548754a7c797 | Bin 4293 -> 4293 bytes .../1b/1bf3d2921db44a045acc548754a7c797.info | Bin 571 -> 596 bytes .../1e/1edaba0e604d1244a9245cd9a8306816 | Bin 12861 -> 0 bytes .../1e/1edaba0e604d1244a9245cd9a8306816.info | Bin 649 -> 0 bytes .../38/386eb143d0a5a0947a0f4bad889c3e6f | Bin 4360 -> 4676 bytes .../38/386eb143d0a5a0947a0f4bad889c3e6f.info | Bin 601 -> 626 bytes .../3c/3c0ad459c1534645b5d603b7cc258f97 | Bin 5992 -> 0 bytes .../3c/3c0ad459c1534645b5d603b7cc258f97.info | Bin 33719 -> 0 bytes .../43/4336b0f89b9f24808bfc781a1e52b6f0 | Bin 4345 -> 4345 bytes .../43/4336b0f89b9f24808bfc781a1e52b6f0.info | Bin 618 -> 643 bytes .../46/46fe9e0b23166454c8cb73040321d78c | Bin 9885 -> 9881 bytes .../46/46fe9e0b23166454c8cb73040321d78c.info | Bin 619 -> 644 bytes .../49/49a86c1078ce4314b9c4224560e031b9 | Bin 5813 -> 5757 bytes .../49/49a86c1078ce4314b9c4224560e031b9.info | Bin 610 -> 635 bytes .../4f/4f35fa249b5008c44ac2998be6f82d4d | Bin 4268 -> 4276 bytes .../4f/4f35fa249b5008c44ac2998be6f82d4d.info | Bin 594 -> 619 bytes .../58/5828f252c3c228f4b931f66c21e525c4 | Bin 5841 -> 4901 bytes .../58/5828f252c3c228f4b931f66c21e525c4.info | Bin 628 -> 653 bytes .../5b/5ba22c80948c94e44a82b9fd1b3abd0d | Bin 7669 -> 7569 bytes .../5b/5ba22c80948c94e44a82b9fd1b3abd0d.info | Bin 615 -> 640 bytes .../5f/5f32cd94baa94578a686d4b9d6b660f7 | Bin 7853 -> 8141 bytes .../5f/5f32cd94baa94578a686d4b9d6b660f7.info | Bin 364922 -> 398387 bytes .../64/64b48e8bdcc9e0541aa902936def9faa | Bin 4740 -> 0 bytes .../64/64b48e8bdcc9e0541aa902936def9faa.info | Bin 600 -> 0 bytes .../68/68a19ebe3f7a2b947b8c7720fbc82b59 | Bin 4325 -> 4325 bytes .../68/68a19ebe3f7a2b947b8c7720fbc82b59.info | Bin 602 -> 627 bytes .../6b/6bca9ccf900ccc84c887d783321d27e2 | Bin 16705 -> 11441 bytes .../6b/6bca9ccf900ccc84c887d783321d27e2.info | Bin 616 -> 641 bytes .../6e/6ec40637fcf97bb4094e5db6edfe344d | Bin 4252 -> 4292 bytes .../6e/6ec40637fcf97bb4094e5db6edfe344d.info | Bin 17414 -> 17474 bytes .../73/7312850033767144bb8b56eac9e62164 | Bin 4329 -> 4329 bytes .../73/7312850033767144bb8b56eac9e62164.info | Bin 8805 -> 8830 bytes .../73/7314d480a23bf4049a0a7aecc9c92ca2 | Bin 4645 -> 4673 bytes .../73/7314d480a23bf4049a0a7aecc9c92ca2.info | Bin 615 -> 688 bytes .../73/739bbd9f364b4268874f9fd86ab3beef | Bin 5976 -> 6305 bytes .../73/739bbd9f364b4268874f9fd86ab3beef.info | Bin 33717 -> 66893 bytes .../73/73a0556bda803bf4e898751dcfcf21a8 | Bin 8925 -> 8897 bytes .../73/73a0556bda803bf4e898751dcfcf21a8.info | Bin 615 -> 640 bytes .../73/73d5d79effb76f84491567f3c473b810 | Bin 4524 -> 0 bytes .../73/73d5d79effb76f84491567f3c473b810.info | Bin 595 -> 0 bytes .../76/7687f525efe9f4b449dfe5a7fe0b7c8e | Bin 11478 -> 0 bytes .../76/7687f525efe9f4b449dfe5a7fe0b7c8e.info | Bin 639 -> 0 bytes .../7c/7cbab2be89b54486bbd23a6fe637d30e | Bin 4536 -> 0 bytes .../7c/7cbab2be89b54486bbd23a6fe637d30e.info | Bin 567 -> 0 bytes .../7f/7f38d614fcfa3b541bde2acda92af7ca | Bin 11678 -> 0 bytes .../7f/7f38d614fcfa3b541bde2acda92af7ca.info | Bin 633 -> 0 bytes .../7f/7fae0ddab09ac324c85494471274d6a4 | Bin 17201 -> 15625 bytes .../7f/7fae0ddab09ac324c85494471274d6a4.info | Bin 595 -> 620 bytes .../80/80a3616ca19596e4da0f10f14d241e9f | Bin 9617 -> 9777 bytes .../80/80a3616ca19596e4da0f10f14d241e9f.info | Bin 729059 -> 762771 bytes .../85/852e56802eb941638acbb491814497b0 | Bin 5921 -> 6105 bytes .../85/852e56802eb941638acbb491814497b0.info | Bin 33680 -> 33737 bytes .../87/870353891bb340e2b2a9c8707e7419ba | Bin 8473 -> 8537 bytes .../87/870353891bb340e2b2a9c8707e7419ba.info | Bin 464309 -> 464684 bytes .../8d/8d26b9eddedb33d48be044bb268a57c7 | Bin 157021 -> 205065 bytes .../8d/8d26b9eddedb33d48be044bb268a57c7.info | Bin 596 -> 621 bytes .../8e/8e0cd8ed44d4412cbe0642067abc9e44 | Bin 4544 -> 6104 bytes .../8e/8e0cd8ed44d4412cbe0642067abc9e44.info | Bin 574 -> 33726 bytes .../94/941dde9a9ca65d74489c024e76c8bfe8 | Bin 4301 -> 0 bytes .../94/941dde9a9ca65d74489c024e76c8bfe8.info | Bin 577 -> 0 bytes .../94/94fb4a9fda44f4b40a63908a3e471012 | Bin 9905 -> 15953 bytes .../94/94fb4a9fda44f4b40a63908a3e471012.info | Bin 624 -> 663 bytes .../95/95553d89c282bf141b499a612fd87915 | Bin 4301 -> 0 bytes .../95/95553d89c282bf141b499a612fd87915.info | Bin 579 -> 0 bytes .../97/97decbdab0634cdd991f8d23ddf0dead | Bin 4560 -> 4720 bytes .../97/97decbdab0634cdd991f8d23ddf0dead.info | Bin 578 -> 603 bytes .../9d/9d42e4d46d897b648a1d6ed58a18e8a6 | Bin 4528 -> 0 bytes .../9d/9d42e4d46d897b648a1d6ed58a18e8a6.info | Bin 598 -> 0 bytes .../a5/a51c3dbd81ecb6741b7a2c5b06dbcb2e | Bin 29864 -> 32564 bytes .../a5/a51c3dbd81ecb6741b7a2c5b06dbcb2e.info | Bin 577 -> 602 bytes .../a5/a57cd5c56c9d75c4ba0ee9fbc6e1d8df | Bin 4203456 -> 4203688 bytes .../a5/a57cd5c56c9d75c4ba0ee9fbc6e1d8df.info | Bin 16717 -> 17548 bytes .../ad/adebbd281f1a4ef3a30be7f21937e02f | Bin 6069 -> 6229 bytes .../ad/adebbd281f1a4ef3a30be7f21937e02f.info | Bin 66758 -> 66833 bytes .../b2/b2d1785fa0c551e408b6c94398847b76 | Bin 9649 -> 9573 bytes .../b2/b2d1785fa0c551e408b6c94398847b76.info | Bin 619 -> 644 bytes .../b3/b31dbc11539eece42a44d36236d52617 | Bin 8235316 -> 8236648 bytes .../b3/b31dbc11539eece42a44d36236d52617.info | Bin 22829 -> 23248 bytes .../b4/b45c3effcfd797840bd8ce4b155dc277 | Bin 4325 -> 4325 bytes .../b4/b45c3effcfd797840bd8ce4b155dc277.info | Bin 599 -> 624 bytes .../be/be3c3a084f7b29b4880b42b4cfbf4d8f | Bin 16489 -> 20233 bytes .../be/be3c3a084f7b29b4880b42b4cfbf4d8f.info | Bin 613 -> 638 bytes .../be/be96d45fe21847a4a805d408a8015c84 | Bin 6717 -> 4865 bytes .../be/be96d45fe21847a4a805d408a8015c84.info | Bin 622 -> 647 bytes .../c9/c9da270df5147d24597cc106058c1fa7 | Bin 13309 -> 13137 bytes .../c9/c9da270df5147d24597cc106058c1fa7.info | Bin 640 -> 665 bytes .../ce/ce57571128519544da2f66ec0a7a36fb | Bin 4297 -> 4297 bytes .../ce/ce57571128519544da2f66ec0a7a36fb.info | Bin 571 -> 596 bytes .../d1/d1defc434452f5b478b19909d1e5fc8b | Bin 4301 -> 4333 bytes .../d1/d1defc434452f5b478b19909d1e5fc8b.info | Bin 577 -> 637 bytes .../d2/d2244eee8a3a4784fb40d1123ff69301 | Bin 29477 -> 27717 bytes .../d2/d2244eee8a3a4784fb40d1123ff69301.info | Bin 621 -> 646 bytes .../d3/d37c2cf88f7c59f4c8cf5d3812568143 | Bin 6437 -> 6349 bytes .../d3/d37c2cf88f7c59f4c8cf5d3812568143.info | Bin 637 -> 662 bytes .../d4/d4aa343e31277cd45b2c3096d3318b90 | Bin 5084 -> 0 bytes .../d4/d4aa343e31277cd45b2c3096d3318b90.info | Bin 603 -> 0 bytes .../d7/d7ab6cdb4ba1e4c41bf8a76d2eca7717 | Bin 24821 -> 37277 bytes .../d7/d7ab6cdb4ba1e4c41bf8a76d2eca7717.info | Bin 594 -> 624 bytes .../d8/d878ba61b185a30408789526a14fa025 | Bin 4276 -> 0 bytes .../d8/d878ba61b185a30408789526a14fa025.info | Bin 2003 -> 0 bytes .../de/def2782dd412c1f499fdd7e389f5c97b | Bin 7449 -> 8585 bytes .../de/def2782dd412c1f499fdd7e389f5c97b.info | Bin 628 -> 658 bytes .../e9/e979227f3384fac4b8ca0b3550bf005c | Bin 15925 -> 14985 bytes .../e9/e979227f3384fac4b8ca0b3550bf005c.info | Bin 616 -> 641 bytes .../ef/efed635ae0049ee4c825ce2cf3ab50b0 | Bin 4301 -> 4301 bytes .../ef/efed635ae0049ee4c825ce2cf3ab50b0.info | Bin 577 -> 602 bytes .../f0/f0032bd9499af5e4aa85ea41615843a0 | Bin 4293 -> 4293 bytes .../f0/f0032bd9499af5e4aa85ea41615843a0.info | Bin 571 -> 596 bytes .../f4/f4d909dcb749c45459770e058a2efac3 | Bin 4301 -> 0 bytes .../f4/f4d909dcb749c45459770e058a2efac3.info | Bin 579 -> 0 bytes .../f5/f5be45115742b07478e21c85fcc233ec | Bin 5041 -> 4885 bytes .../f5/f5be45115742b07478e21c85fcc233ec.info | Bin 628 -> 653 bytes .../f5/f5f67c52d1564df4a8936ccd202a3bd8 | Bin 12497 -> 12529 bytes .../f5/f5f67c52d1564df4a8936ccd202a3bd8.info | Bin 1324811 -> 1358968 bytes .../f9/f9c6e0c408020c341b3c329ec30355a1 | Bin 13725 -> 13809 bytes .../f9/f9c6e0c408020c341b3c329ec30355a1.info | Bin 628 -> 653 bytes ...hadercompiler-UnityShaderCompiler.exe0.log | 4 +- ProjectSettings/ProjectSettings.asset | Bin 38505 -> 52566 bytes ProjectSettings/ProjectVersion.txt | 3 +- 208 files changed, 57040 insertions(+), 32086 deletions(-) delete mode 100644 Assets/Plugins/x86/libopenvr_api.so delete mode 100644 Assets/Plugins/x86/openvr_api.dll delete mode 100644 Assets/Plugins/x86_64/libopenvr_api.so delete mode 100644 Assets/Plugins/x86_64/openvr_api.dll delete mode 100644 Library/UnityAssemblies/UnityEditor.EditorTestsRunner.dll delete mode 100644 Library/UnityAssemblies/UnityEditor.EditorTestsRunner.xml delete mode 100644 Library/metadata/00/00000000000000008100000000000000 delete mode 100644 Library/metadata/00/00000000000000008100000000000000.info delete mode 100644 Library/metadata/00/003cb17d6edd28b4d88df6f35f9c03ab delete mode 100644 Library/metadata/00/003cb17d6edd28b4d88df6f35f9c03ab.info delete mode 100644 Library/metadata/02/021228b76f139394fae4afb56cd6bf29 delete mode 100644 Library/metadata/02/021228b76f139394fae4afb56cd6bf29.info delete mode 100644 Library/metadata/12/128449277d8f96b46a3816056eee4067 delete mode 100644 Library/metadata/12/128449277d8f96b46a3816056eee4067.info delete mode 100644 Library/metadata/1e/1edaba0e604d1244a9245cd9a8306816 delete mode 100644 Library/metadata/1e/1edaba0e604d1244a9245cd9a8306816.info delete mode 100644 Library/metadata/3c/3c0ad459c1534645b5d603b7cc258f97 delete mode 100644 Library/metadata/3c/3c0ad459c1534645b5d603b7cc258f97.info delete mode 100644 Library/metadata/64/64b48e8bdcc9e0541aa902936def9faa delete mode 100644 Library/metadata/64/64b48e8bdcc9e0541aa902936def9faa.info delete mode 100644 Library/metadata/73/73d5d79effb76f84491567f3c473b810 delete mode 100644 Library/metadata/73/73d5d79effb76f84491567f3c473b810.info delete mode 100644 Library/metadata/76/7687f525efe9f4b449dfe5a7fe0b7c8e delete mode 100644 Library/metadata/76/7687f525efe9f4b449dfe5a7fe0b7c8e.info delete mode 100644 Library/metadata/7c/7cbab2be89b54486bbd23a6fe637d30e delete mode 100644 Library/metadata/7c/7cbab2be89b54486bbd23a6fe637d30e.info delete mode 100644 Library/metadata/7f/7f38d614fcfa3b541bde2acda92af7ca delete mode 100644 Library/metadata/7f/7f38d614fcfa3b541bde2acda92af7ca.info delete mode 100644 Library/metadata/94/941dde9a9ca65d74489c024e76c8bfe8 delete mode 100644 Library/metadata/94/941dde9a9ca65d74489c024e76c8bfe8.info delete mode 100644 Library/metadata/95/95553d89c282bf141b499a612fd87915 delete mode 100644 Library/metadata/95/95553d89c282bf141b499a612fd87915.info delete mode 100644 Library/metadata/9d/9d42e4d46d897b648a1d6ed58a18e8a6 delete mode 100644 Library/metadata/9d/9d42e4d46d897b648a1d6ed58a18e8a6.info delete mode 100644 Library/metadata/d4/d4aa343e31277cd45b2c3096d3318b90 delete mode 100644 Library/metadata/d4/d4aa343e31277cd45b2c3096d3318b90.info delete mode 100644 Library/metadata/d8/d878ba61b185a30408789526a14fa025 delete mode 100644 Library/metadata/d8/d878ba61b185a30408789526a14fa025.info delete mode 100644 Library/metadata/f4/f4d909dcb749c45459770e058a2efac3 delete mode 100644 Library/metadata/f4/f4d909dcb749c45459770e058a2efac3.info diff --git a/Assets/Plugins/x86/libopenvr_api.so b/Assets/Plugins/x86/libopenvr_api.so deleted file mode 100644 index a2505450834286ecae2bbe96c4742eca32584da7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 347110 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 U2a^TqXRj1@%+IAj&U=`xx$0P2MbnNmnJYwlP{ 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%0D3}Lv?4U@W>WX>P|Mc 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 - + + + Android 6.0, "Marshmallow", API level 23. + + + + + Android 7.0, "Nougat", API level 24. + + + + + Android 7.1, "Nougat", API level 25. + + + - Android 2.3.1, "Gingerbread", API level 9. + Sets the target API level automatically, according to the latest installed SDK on your computer. @@ -428,7 +577,8 @@ - AnimationMode is used by the AnimationWindow to store properties modifed by the AnimationClip playback. + AnimationMode is used by the AnimationWindow to store properties modified + by the AnimationClip playback. @@ -436,21 +586,43 @@ The color used to show that a property is currently being animated. + + + 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 prefab. + + + + Initialise the start of the animation clip sampling. + + + + + Finish the sampling of the animation clip. + + - Are we currently in AnimationMode. + 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. + Samples an AnimationClip on the object and also records any modified + properties in AnimationMode. @@ -1226,7 +1398,13 @@ Units is normalized time. - The normalized time of the source state when the condition is true. + 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. @@ -1236,7 +1414,7 @@ Units is normalized time. - When active the transition duration will have a fixed duration. + Determines whether the duration of the transition is reported in a fixed duration in seconds or as a normalized time. @@ -1318,135 +1496,6 @@ Units is normalized time. The condition to remove. - - - AvatarMask are used to mask out humanoid body parts and transforms. - - - - - Number of transforms. - - - - - 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. - - - - 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. - - Blend trees are used to blend continuously animation between their childs. They can either be 1D or 2D. @@ -1779,6 +1828,36 @@ Units is normalized time. + + + 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. @@ -1830,6 +1909,30 @@ Units is normalized time. The bindings which defines the path and the property of the curve. The curve to add. Setting this to null will remove the curve. + + + 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. @@ -1838,31 +1941,76 @@ Units is normalized time. - + - .NET API compatibility level. + Tangent constraints on Keyframe. - + - .NET 2.0. + The tangents are automatically set to make the curve go smoothly through the key. - + - .NET 2.0 Subset. + The tangents are automatically set to make the curve go smoothly through the key. - + - Helpers for builtin arrays ... + The curve retains a constant value between two keys. - + - Appends item to the end of array. + 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, Android and Tizen if stripping level is set to "Use micro mscorlib". + + + + + Web profile, used only by Samsung TV. + + + + + Helpers for builtin arrays ... + + + + + Appends item to the end of array. + + @@ -1882,6 +2030,16 @@ Units is normalized time. 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. @@ -2025,6 +2183,30 @@ Units is normalized time. 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. @@ -2136,22 +2318,24 @@ Units is normalized time. - Search the asset database using a search filter string. + Search the asset database using the search filter string. - The filter string can contain search data for: names, asset labels and types (class names). - Specifying one or more folders will limit the searching to these folders and their child folders (and is faster than searching all assets). + 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 GUIDs. + Array of matching asset. Note that GUIDs will be returned. - Search the asset database using a search filter string. + Search the asset database using the search filter string. - The filter string can contain search data for: names, asset labels and types (class names). - Specifying one or more folders will limit the searching to these folders and their child folders (and is faster than searching all assets). + 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 GUIDs. + Array of matching asset. Note that GUIDs will be returned. @@ -2168,6 +2352,16 @@ Units is normalized time. 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. @@ -2268,12 +2462,36 @@ Units is normalized time. 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 an absolute path to a directory, this method will return an array of all it's subdirectories. @@ -2330,6 +2548,19 @@ Units is normalized time. + + + 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. + + + + Is asset a foreign asset? @@ -2358,6 +2589,60 @@ Units is normalized time. + + + 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. + + Is asset a native asset? @@ -2372,52 +2657,108 @@ Units is normalized time. + + + 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. + + - Use IsOpenForEdit to determine if the asset is open for edit by the version control. + Query whether an asset file is open for edit in version control. - Is the path to the asset on disk relative to project folder. - Used to give reason for not open. - - + 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 is the asset can be edited. + True if the asset is considered open for edit by the selected version control system. - Use IsOpenForEdit to determine if the asset is open for edit by the version control. + Query whether an asset file is open for edit in version control. - Is the path to the asset on disk relative to project folder. - Used to give reason for not open. - - + 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 is the asset can be edited. + True if the asset is considered open for edit by the selected version control system. - Use IsOpenForEdit to determine if the asset is open for edit by the version control. + Query whether an asset file is open for edit in version control. - Is the path to the asset on disk relative to project folder. - Used to give reason for not open. - - + 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 is the asset can be edited. + True if the asset is considered open for edit by the selected version control system. - Use IsOpenForEdit to determine if the asset is open for edit by the version control. + Query whether an asset file is open for edit in version control. - Is the path to the asset on disk relative to project folder. - Used to give reason for not open. - - + 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 is the asset can be edited. + True if the asset is considered open for edit by the selected version control system. @@ -2459,7 +2800,7 @@ Units is normalized time. Path of the asset to load. Data type of the asset. - The asset matching the parameters + The asset matching the parameters. @@ -2568,6 +2909,13 @@ Units is normalized time. + + + 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. @@ -2659,7 +3007,8 @@ Units is normalized time. - AssetModificationProcessor lets you hook into saving of serialized assets and scenes which are edited inside Unity. + AssetModificationProcessor lets you hook into saving of serialized assets and + scenes which are edited inside Unity. @@ -2785,6 +3134,71 @@ Units is normalized time. The number of previews that can be loaded into the cache before the least used previews are being unloaded. + + + 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. @@ -2923,6 +3337,70 @@ Amount of compression. The value roughly corresponds to the ratio between the re + + + An exception class that represents a failed build. + + + + + Constructs a BuildFailedException object. + + The error that caused the build to fail. + The exception that caused the build to fail. + + + + Constructs a BuildFailedException object. + + The error that caused the build to fail. + The exception that caused the build to fail. + + + + 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 after the build is complete. + + + + + Implement this function to receive a callback after the build is complete. + + + + + + + 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 for each Scene during the build. + + + + + Implement this function to receive a callback for each Scene during the build. + + The current Scene being processed. + Asset Bundle building options. @@ -2958,6 +3436,11 @@ Amount of compression. The value roughly corresponds to the ratio between the re Do not include type information within the AssetBundle. + + + Do a dry run build. + + Force rebuild the assetBundles. @@ -2973,6 +3456,11 @@ Amount of compression. The value roughly corresponds to the ratio between the re 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. @@ -3008,6 +3496,16 @@ Amount of compression. The value roughly corresponds to the ratio between the re Build only the scripts of a project. + + + Use chunk-based Lz4 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. @@ -3043,6 +3541,11 @@ Amount of compression. The value roughly corresponds to the ratio between the re 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). @@ -3212,21 +3715,48 @@ These will be used as asset names, which you can then pass to AssetBundle.Load t Output path for the AssetBundles. AssetBundle building options. - Target build platform. + 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. - AssetBundle building map. + + The manifest listing all AssetBundles included in this build. + - + Builds a player. + Provide various options to control the behavior of BuildPipeline.BuildPlayer. + + An error message if an error occurred. + + + + + Builds a player. These overloads are still supported, but will be replaces by BuildPlayer (BuildPlayerOptions). Please use it 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 replaces by BuildPlayer (BuildPlayerOptions). Please use it 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. @@ -3311,44 +3841,74 @@ These will be used as asset names, which you can then pass to AssetBundle.Load t Lets you manage cross-references and dependencies between different asset bundles and player builds. - + - Target build platform. + Provide various options to control the behavior of BuildPipeline.BuildPlayer. - + - Build an iOS player. + The path to an manifest file describing all of the asset bundles used in the build (optional). - + - OBSOLETE: Use iOS. Build an iOS player. + The path where the application will be built. - + - Build to Apple's tvOS platform. + Additional BuildOptions, like whether to run the built player. - + - Build an Android .apk standalone app. + 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). - + - Build to Nintendo 3DS platform. + The BuildTarget to build. - + - Build a PS3 Standalone. + The BuildTargetGroup to build. - + - Build a PS4 Standalone. + 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. @@ -3378,17 +3938,17 @@ These will be used as asset names, which you can then pass to AssetBundle.Load t - Build an OS X standalone (Intel only). + Build a macOS standalone (Intel only). - Build an OSX Intel 64-bit standalone. + Build a macOS Intel 64-bit standalone. - Build a universal OSX standalone. + Build a universal macOS standalone. @@ -3401,6 +3961,11 @@ These will be used as asset names, which you can then pass to AssetBundle.Load t Build a Windows 64-bit standalone. + + + Build a Nintendo Switch player. + + Build a Tizen player. @@ -3431,11 +3996,6 @@ These will be used as asset names, which you can then pass to AssetBundle.Load t Build an Windows Store Apps player. - - - Build a XBox Standalone. - - Build a Xbox One Standalone. @@ -3466,21 +4026,16 @@ These will be used as asset names, which you can then pass to AssetBundle.Load t Android target. - + - GLESEmu target. + Facebook target. - + Nintendo 3DS target. - - - Sony Playstation 3 target. - - Sony Playstation 4 target. @@ -3501,6 +4056,11 @@ These will be used as asset names, which you can then pass to AssetBundle.Load t Mac/PC standalone target. + + + Nintendo Switch target. + + Samsung Tizen target. @@ -3531,11 +4091,6 @@ These will be used as asset names, which you can then pass to AssetBundle.Load t Windows Store Apps target. - - - Microsoft XBOX360 target. - - Microsoft Xbox One target. @@ -3575,7 +4130,7 @@ These will be used as asset names, which you can then pass to AssetBundle.Load t - Add this attribute to get a callback just before building the scene. + Add this attribute to a method to get a notification just after building the scene. @@ -3613,6 +4168,11 @@ These will be used as asset names, which you can then pass to AssetBundle.Load t A mask containing all the transform in the file will be created internally. + + + No Mask. All the animation will be imported. + + Used as input to ColorField to configure the HDR color ranges in the ColorPicker. @@ -3647,6 +4207,21 @@ These will be used as asset names, which you can then pass to AssetBundle.Load t Minimum exposure value used in the tonemapping section of the Color Picker. Maximum exposure value used in the tonemapping section of the Color Picker. + + + 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. + + Tells an Editor class which run-time type it's an editor for. @@ -3731,6 +4306,16 @@ These will be used as asset names, which you can then pass to AssetBundle.Load t 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. @@ -3748,7 +4333,8 @@ These will be used as asset names, which you can then pass to AssetBundle.Load t - Override this method to make your own GUI for the decorator. + 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. @@ -3858,27 +4444,62 @@ These will be used as asset names, which you can then pass to AssetBundle.Load t - Draw objects with the albedo component only. + Draw objects with the albedo component only. This value has been deprecated. Please use DrawCameraMode.RealtimeAlbedo. - Display alpha channel of the rendering. + The camera is set to display the alpha channel of the rendering. - Draw objects with baked GI only. + 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 baked texel validity only. - Draw objects with different color for each chart (UV island). + Draw objects with different colors for each real-time chart (UV island). - Draw with different color for each cluster. + Draw with different colors for each cluster. @@ -3903,17 +4524,22 @@ These will be used as asset names, which you can then pass to AssetBundle.Load t - Draw objects with directionality for real-time GI. + Draw objects with directionality for real-time GI. This value has been deprecated. Please use DrawCameraMode.RealtimeDirectionality. - Draw objects with the emission component only. + Draw objects with the emission component only. This value has been deprecated. Please use DrawCameraMode.RealtimeEmissive. - Draw objects with real-time GI only. + 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. @@ -3923,7 +4549,7 @@ These will be used as asset names, which you can then pass to AssetBundle.Load t - Display texture resolution, with red tint indicating too high resolution, and blue tint indicating texture sizes that could be higher. + 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. @@ -3933,17 +4559,47 @@ These will be used as asset names, which you can then pass to AssetBundle.Load t - Display scene overdraw, with brighter colors indicating more overdraw. + 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. - Draw color-coded render paths. + The camera is set to draw color coded render paths. - Draw directional light shadowmap cascades. + 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. @@ -3961,6 +4617,16 @@ These will be used as asset names, which you can then pass to AssetBundle.Load t Draw the camera where all objects have a wireframe overlay. and no background clearing. + + + 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. @@ -4026,6 +4692,26 @@ These will be used as asset names, which you can then pass to AssetBundle.Load t + + + Creates a cached editor using a context object. + + + + + + + + + + Creates a cached editor using a context object. + + + + + + + Make a custom editor for targetObject or targetObjects. @@ -4062,6 +4748,14 @@ These will be used as asset names, which you can then pass to AssetBundle.Load t + + + Make a custom editor for targetObject or targetObjects with a context object. + + + + + Draw the built-in inspector. @@ -4160,6 +4854,11 @@ These will be used as asset names, which you can then pass to AssetBundle.Load t 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) @@ -4213,9 +4912,14 @@ Each time an object is (or a group of objects are) created, renamed, parented, u 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. + + - Is editor currently updating? (Read Only) + True if the Editor is currently refreshing the AssetDatabase. @@ -4374,7 +5078,7 @@ Each time an object is (or a group of objects are) created, renamed, parented, u - Ask the user if he wants to save the open scene. + Ask the user if they want to save the open scene. @@ -4407,6 +5111,19 @@ Each time an object is (or a group of objects are) created, renamed, parented, u 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. @@ -4417,6 +5134,42 @@ Each time an object is (or a group of objects are) created, renamed, parented, u 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. + + + + + 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. + + + + + 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. @@ -4496,6 +5249,21 @@ Each time an object is (or a group of objects are) created, renamed, parented, u The value entered by the user. + + + Check if any control was changed inside a block of code. + + + + + True if GUI.changed was set to true, otherwise false. + + + + + Begins a ChangeCheckScope. + + Make a field for selecting a Color. @@ -4642,7 +5410,61 @@ Each time an object is (or a group of objects are) created, renamed, parented, u 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. + + + + Make 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. + + + + Make 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. + + + + + Make 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. + + + + + Make 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. + + + + + Make 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. @@ -4787,6 +5609,17 @@ Each time an object is (or a group of objects are) created, renamed, parented, u 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. + Make a text field for entering doubles. @@ -4897,6 +5730,30 @@ Each time an object is (or a group of objects are) created, renamed, parented, u 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. + + + Make 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. + + + + + Make 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. @@ -5032,6 +5889,18 @@ Each time an object is (or a group of objects are) created, renamed, parented, u Internal version that also gives you back which flags were changed and what they were changed to. + + + Make 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. + + Make an enum popup selection field for a bitmask. @@ -5567,7 +6436,7 @@ Each time an object is (or a group of objects are) created, renamed, parented, u 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. + 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. @@ -5577,7 +6446,7 @@ Each time an object is (or a group of objects are) created, renamed, parented, u 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. + 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. @@ -5795,7 +6664,7 @@ Each time an object is (or a group of objects are) created, renamed, parented, u - Make a text field for entering integers. + Make 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. @@ -5807,7 +6676,7 @@ Each time an object is (or a group of objects are) created, renamed, parented, u - Make a text field for entering integers. + Make 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. @@ -5819,7 +6688,7 @@ Each time an object is (or a group of objects are) created, renamed, parented, u - Make a text field for entering integers. + Make 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. @@ -5829,9 +6698,9 @@ Each time an object is (or a group of objects are) created, renamed, parented, u The value entered by the user. - + - Make a text field for entering integers. + Make 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. @@ -5841,9 +6710,9 @@ Each time an object is (or a group of objects are) created, renamed, parented, u The value entered by the user. - + - Make a text field for entering integers. + Make 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. @@ -5853,21 +6722,9 @@ Each time an object is (or a group of objects are) created, renamed, parented, u The value entered by the user. - + - Make a text field for entering 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. - - - - - Make a field for masks. + Make a field for masks. Rectangle on the screen to use for this control. Label for the field. @@ -5953,9 +6810,8 @@ Each time an object is (or a group of objects are) created, renamed, parented, u 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. Rectangle on the screen to use for the slider. - The value the slider shows. This determines the position of the draggable thumb. + 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. @@ -5965,9 +6821,30 @@ Each time an object is (or a group of objects are) created, renamed, parented, u Make 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. + + + + Make 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. - The value the slider shows. This determines the position of the draggable thumb. + 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. + + + + Make 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. @@ -6087,6 +6964,42 @@ Each time an object is (or a group of objects are) created, renamed, parented, u The object that has been set by the user. + + + Make 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. + + + + Make 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. + + + + Make 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. + + + + Make 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. + Make a text field where the user can enter a password. @@ -6845,8 +7758,9 @@ Each time an object is (or a group of objects are) created, renamed, parented, u Begin a horizontal group and get its rect back. Optional GUIStyle. - 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, + 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. @@ -6854,8 +7768,9 @@ 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 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, + 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. @@ -6973,8 +7888,9 @@ 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 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, + 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. @@ -6982,8 +7898,19 @@ 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 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, + 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 group and get its rect back. + + Optional GUIStyle. + 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. @@ -6998,7 +7925,7 @@ GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. Label to display above the field. The value to edit. 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, +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. The value entered by the user. @@ -7011,7 +7938,7 @@ GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. Label to display above the field. The value to edit. 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, +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. The value entered by the user. @@ -7024,7 +7951,7 @@ GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. Label to display above the field. The value to edit. 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, +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. The value entered by the user. @@ -7041,7 +7968,7 @@ GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. If true, treat the color as an HDR value. If false, treat it as a standard LDR value. An object that sets the presentation parameters for an HDR color. If not using an HDR color, set this to null. 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, +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. The color selected by the user. @@ -7058,7 +7985,7 @@ GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. If true, treat the color as an HDR value. If false, treat it as a standard LDR value. An object that sets the presentation parameters for an HDR color. If not using an HDR color, set this to null. 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, +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. The color selected by the user. @@ -7075,7 +8002,7 @@ GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. If true, treat the color as an HDR value. If false, treat it as a standard LDR value. An object that sets the presentation parameters for an HDR color. If not using an HDR color, set this to null. 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, +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. The color selected by the user. @@ -7092,7 +8019,7 @@ GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. If true, treat the color as an HDR value. If false, treat it as a standard LDR value. An object that sets the presentation parameters for an HDR color. If not using an HDR color, set this to null. 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, +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. The color selected by the user. @@ -7107,7 +8034,7 @@ GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. The color to show the curve with. Optional rectangle that the curve is restrained within. 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, +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. The curve edited by the user. @@ -7122,7 +8049,7 @@ GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. The color to show the curve with. Optional rectangle that the curve is restrained within. 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, +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. The curve edited by the user. @@ -7137,7 +8064,7 @@ GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. The color to show the curve with. Optional rectangle that the curve is restrained within. 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, +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. The curve edited by the user. @@ -7152,7 +8079,7 @@ GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. The color to show the curve with. Optional rectangle that the curve is restrained within. 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, +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. The curve edited by the user. @@ -7167,7 +8094,7 @@ GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. The color to show the curve with. Optional rectangle that the curve is restrained within. 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, +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. The curve edited by the user. @@ -7182,13 +8109,25 @@ GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. The color to show the curve with. Optional rectangle that the curve is restrained within. 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, +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 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. + Optional label to display in front of the field. Pass [[GUIContent.none] to hide the label. + + Make a field for editing an AnimationCurve. @@ -7196,8 +8135,129 @@ GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. The color to show the curve with. Optional rectangle that the curve is restrained within. 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, +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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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. + @@ -7207,7 +8267,7 @@ GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. The value to edit. Optional GUIStyle. 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, +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. @@ -7221,7 +8281,7 @@ GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. The value to edit. Optional GUIStyle. 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, +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. @@ -7235,7 +8295,7 @@ GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. The value to edit. Optional GUIStyle. 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, +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. @@ -7249,7 +8309,7 @@ GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. The value to edit. Optional GUIStyle. 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, +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. @@ -7263,7 +8323,7 @@ GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. The value to edit. Optional GUIStyle. 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, +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. @@ -7277,7 +8337,7 @@ GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. The value to edit. Optional GUIStyle. 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, +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. @@ -7290,7 +8350,7 @@ GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. 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 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, +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. @@ -7300,7 +8360,7 @@ GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. 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 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, +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. @@ -7311,7 +8371,7 @@ GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. The value to edit. Optional GUIStyle. 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, +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. @@ -7325,7 +8385,7 @@ GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. The value to edit. Optional GUIStyle. 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, +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. @@ -7339,7 +8399,7 @@ GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. The value to edit. Optional GUIStyle. 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, +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. @@ -7353,7 +8413,7 @@ GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. The value to edit. Optional GUIStyle. 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, +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. @@ -7367,7 +8427,7 @@ GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. The value to edit. Optional GUIStyle. 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, +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. @@ -7381,7 +8441,7 @@ GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. The value to edit. Optional GUIStyle. 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, +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. @@ -7394,7 +8454,7 @@ GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. 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 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, +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. @@ -7404,7 +8464,7 @@ GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. 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 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, +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. @@ -7415,7 +8475,7 @@ GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. The text to edit. Optional GUIStyle. 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, +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. @@ -7429,7 +8489,7 @@ GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. The text to edit. Optional GUIStyle. 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, +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. @@ -7443,7 +8503,7 @@ GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. The text to edit. Optional GUIStyle. 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, +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. @@ -7457,7 +8517,7 @@ GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. The text to edit. Optional GUIStyle. 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, +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. @@ -7471,7 +8531,7 @@ GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. The text to edit. Optional GUIStyle. 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, +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. @@ -7485,7 +8545,7 @@ GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. The text to edit. Optional GUIStyle. 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, +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. @@ -7498,7 +8558,7 @@ GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. 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 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, +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. @@ -7508,7 +8568,7 @@ GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. 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 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, +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. @@ -7519,7 +8579,7 @@ GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. The value to edit. Optional GUIStyle. 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, +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. The value entered by the user. @@ -7533,7 +8593,7 @@ GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. The value to edit. Optional GUIStyle. 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, +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. The value entered by the user. @@ -7547,7 +8607,7 @@ GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. The value to edit. Optional GUIStyle. 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, +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. The value entered by the user. @@ -7561,7 +8621,7 @@ GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. The value to edit. Optional GUIStyle. 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, +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. The value entered by the user. @@ -7575,7 +8635,7 @@ GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. The value to edit. Optional GUIStyle. 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, +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. The value entered by the user. @@ -7589,12 +8649,40 @@ GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. The value to edit. Optional GUIStyle. 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, +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. @@ -7627,7 +8715,7 @@ GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. Prefix label for this field. Enum to use for the flags. 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, +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. @@ -7641,7 +8729,7 @@ GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. Prefix label for this field. Enum to use for the flags. 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, +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. @@ -7655,7 +8743,7 @@ GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. Prefix label for this field. Enum to use for the flags. 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, +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. @@ -7669,7 +8757,7 @@ GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. Prefix label for this field. Enum to use for the flags. 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, +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. @@ -7683,7 +8771,7 @@ GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. Prefix label for this field. Enum to use for the flags. 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, +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. @@ -7697,13 +8785,37 @@ GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. Prefix label for this field. Enum to use for the flags. 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, +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 an enum popup selection field for a bitmask. + + Optional label in front of the field. + The enum options the field shows. + Optional layout options. + Optional GUIStyle. + + The enum options that has been selected by the user. + + + + + Make an enum popup selection field for a bitmask. + + Optional label in front of the field. + The enum options the field shows. + Optional layout options. + Optional GUIStyle. + + The enum options that has been selected by the user. + + Make an enum popup selection field for a bitmask. @@ -7711,6 +8823,19 @@ GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. Optional label in front of the field. The enum options the field shows. Optional layout options. + Optional GUIStyle. + + The enum options that has been selected by the user. + + + + + Make an enum popup selection field for a bitmask. + + Optional label in front of the field. + The enum options the field shows. + Optional layout options. + Optional GUIStyle. The enum options that has been selected by the user. @@ -7723,7 +8848,7 @@ GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. The enum option the field shows. Optional GUIStyle. 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, +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. The enum option that has been selected by the user. @@ -7737,7 +8862,7 @@ GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. The enum option the field shows. Optional GUIStyle. 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, +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. The enum option that has been selected by the user. @@ -7751,7 +8876,7 @@ GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. The enum option the field shows. Optional GUIStyle. 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, +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. The enum option that has been selected by the user. @@ -7765,7 +8890,7 @@ GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. The enum option the field shows. Optional GUIStyle. 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, +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. The enum option that has been selected by the user. @@ -7779,7 +8904,7 @@ GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. The enum option the field shows. Optional GUIStyle. 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, +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. The enum option that has been selected by the user. @@ -7793,7 +8918,7 @@ GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. The enum option the field shows. Optional GUIStyle. 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, +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. The enum option that has been selected by the user. @@ -7823,7 +8948,7 @@ GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. The value to edit. Optional GUIStyle. 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, +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. The value entered by the user. @@ -7837,7 +8962,7 @@ GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. The value to edit. Optional GUIStyle. 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, +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. The value entered by the user. @@ -7851,7 +8976,7 @@ GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. The value to edit. Optional GUIStyle. 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, +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. The value entered by the user. @@ -7865,7 +8990,7 @@ GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. The value to edit. Optional GUIStyle. 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, +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. The value entered by the user. @@ -7879,7 +9004,7 @@ GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. The value to edit. Optional GUIStyle. 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, +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. The value entered by the user. @@ -7893,7 +9018,7 @@ GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. The value to edit. Optional GUIStyle. 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, +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. The value entered by the user. @@ -7906,6 +9031,19 @@ GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. 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. @@ -7917,6 +9055,19 @@ GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. 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. @@ -7928,6 +9079,7 @@ GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. 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. @@ -7939,6 +9091,7 @@ GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. 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. @@ -7950,8 +9103,8 @@ GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. 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 layouting 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, + 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. @@ -7961,8 +9114,8 @@ GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. 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 layouting 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, + 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. @@ -7972,8 +9125,8 @@ GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. 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 layouting 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, + 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. @@ -7983,8 +9136,8 @@ GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. 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 layouting 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, + 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. @@ -8019,7 +9172,7 @@ GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. 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, +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. @@ -8028,7 +9181,7 @@ GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. 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, +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. @@ -8061,7 +9214,7 @@ GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. The value to edit. Optional GUIStyle. 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, +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. The value entered by the user. @@ -8075,7 +9228,7 @@ GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. The value to edit. Optional GUIStyle. 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, +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. The value entered by the user. @@ -8089,7 +9242,7 @@ GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. The value to edit. Optional GUIStyle. 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, +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. The value entered by the user. @@ -8103,7 +9256,7 @@ GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. The value to edit. Optional GUIStyle. 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, +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. The value entered by the user. @@ -8117,7 +9270,7 @@ GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. The value to edit. Optional GUIStyle. 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, +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. The value entered by the user. @@ -8131,7 +9284,7 @@ GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. The value to edit. Optional GUIStyle. 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, +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. The value entered by the user. @@ -8147,7 +9300,7 @@ GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. An array with the values for each option. Optional GUIStyle. 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, +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. @@ -8163,7 +9316,7 @@ GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. An array with the values for each option. Optional GUIStyle. 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, +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. @@ -8179,7 +9332,7 @@ GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. An array with the values for each option. Optional GUIStyle. 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, +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. @@ -8195,7 +9348,7 @@ GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. An array with the values for each option. Optional GUIStyle. 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, +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. @@ -8211,7 +9364,7 @@ GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. An array with the values for each option. Optional GUIStyle. 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, +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. @@ -8227,7 +9380,7 @@ GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. An array with the values for each option. Optional GUIStyle. 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, +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. @@ -8243,7 +9396,7 @@ GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. An array with the values for each option. Optional GUIStyle. 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, +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. @@ -8259,7 +9412,7 @@ GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. An array with the values for each option. Optional GUIStyle. 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, +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. @@ -8274,7 +9427,7 @@ GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. An array with the values for each option. Optional label in front of the field. 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, +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. @@ -8287,7 +9440,7 @@ GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. An array with the values for each option. Optional label in front of the field. 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, +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. @@ -8300,7 +9453,7 @@ GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. An array with the values for each option. Optional label in front of the field. 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, +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. @@ -8313,7 +9466,7 @@ GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. 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 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, +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. @@ -8328,7 +9481,7 @@ GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. 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 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, +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. @@ -8343,7 +9496,7 @@ GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. 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 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, +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. @@ -8358,7 +9511,7 @@ GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. 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 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, +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. @@ -8370,7 +9523,7 @@ GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. 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 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, +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. @@ -8382,7 +9535,7 @@ GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. 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 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, +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. @@ -8392,7 +9545,7 @@ GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. Label in front of the label field. The label to show to the right. 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, +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. @@ -8403,7 +9556,7 @@ GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. Label in front of the label field. The label to show to the right. 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, +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. @@ -8414,7 +9567,7 @@ GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. Label in front of the label field. The label to show to the right. 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, +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. @@ -8425,7 +9578,7 @@ GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. Label in front of the label field. The label to show to the right. 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, +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. @@ -8436,7 +9589,7 @@ GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. Label in front of the label field. The label to show to the right. 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, +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. @@ -8447,7 +9600,7 @@ GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. Label in front of the label field. The label to show to the right. 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, +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. @@ -8458,7 +9611,7 @@ GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. Label in front of the label field. The label to show to the right. 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, +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. @@ -8469,7 +9622,7 @@ GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. Label in front of the label field. The label to show to the right. 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, +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. @@ -8481,7 +9634,7 @@ GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. The layer shown in the field. Optional GUIStyle. 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, +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. The layer selected by the user. @@ -8495,7 +9648,7 @@ GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. The layer shown in the field. Optional GUIStyle. 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, +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. The layer selected by the user. @@ -8509,7 +9662,7 @@ GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. The layer shown in the field. Optional GUIStyle. 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, +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. The layer selected by the user. @@ -8523,7 +9676,7 @@ GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. The layer shown in the field. Optional GUIStyle. 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, +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. The layer selected by the user. @@ -8537,7 +9690,7 @@ GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. The layer shown in the field. Optional GUIStyle. 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, +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. The layer selected by the user. @@ -8551,7 +9704,7 @@ GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. The layer shown in the field. Optional GUIStyle. 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, +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. The layer selected by the user. @@ -8559,13 +9712,13 @@ GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - Make a text field for entering integers. + 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 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, +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. The value entered by the user. @@ -8573,13 +9726,13 @@ GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - Make a text field for entering integers. + 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 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, +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. The value entered by the user. @@ -8587,13 +9740,13 @@ GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - Make a text field for entering integers. + 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 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, +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. The value entered by the user. @@ -8601,13 +9754,13 @@ GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - Make a text field for entering integers. + 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 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, +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. The value entered by the user. @@ -8615,13 +9768,13 @@ GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - Make a text field for entering integers. + 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 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, +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. The value entered by the user. @@ -8629,13 +9782,13 @@ GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - Make a text field for entering integers. + 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 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, +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. The value entered by the user. @@ -8649,7 +9802,7 @@ GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. The current mask to display. A string array containing the labels for each flag. 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, +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. @@ -8665,7 +9818,7 @@ GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. The current mask to display. A string array containing the labels for each flag. 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, +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. @@ -8681,7 +9834,7 @@ GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. The current mask to display. A string array containing the labels for each flag. 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, +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. @@ -8697,7 +9850,7 @@ GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. The current mask to display. A string array containing the labels for each flag. 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, +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. @@ -8713,7 +9866,7 @@ GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. The current mask to display. A string array containing the labels for each flag. 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, +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. @@ -8729,7 +9882,7 @@ GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. The current mask to display. A string array containing the labels for each flag. 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, +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. @@ -8742,13 +9895,25 @@ 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 value the slider shows. This determines the position of the draggable thumb. 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 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, +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 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. @@ -8756,13 +9921,12 @@ 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 value the slider shows. This determines the position of the draggable thumb. 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 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, +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. @@ -8774,7 +9938,7 @@ GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. 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, +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. @@ -8789,7 +9953,7 @@ GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. 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, +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. @@ -8804,52 +9968,136 @@ GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. 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, +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 text field where the user can enter a password. + Make a field to receive any object type. - 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 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, + 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 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 password entered by the user. - - + - Make a text field where the user can enter a password. + Make a field to receive any object type. - 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 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, + 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 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 password entered by the user. - - + - Make a text field where the user can enter a password. + Make a field to receive any object type. - 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 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, + 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 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 password entered 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 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 field to receive any object type. + + The object the field shows. + The type of the objects that can be assigned. + Optional label in front of the field. + 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. +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 the field shows. + The type of the objects that can be assigned. + Optional label in front of the field. + 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. +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 the field shows. + The type of the objects that can be assigned. + Optional label in front of the field. + 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. +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 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 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 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 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 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 password entered by the user. @@ -8860,7 +10108,7 @@ GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. The password to edit. Optional GUIStyle. 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, +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. The password entered by the user. @@ -8874,7 +10122,7 @@ GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. The password to edit. Optional GUIStyle. 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, +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. The password entered by the user. @@ -8888,7 +10136,7 @@ GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. The password to edit. Optional GUIStyle. 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, +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. The password entered by the user. @@ -8903,7 +10151,7 @@ GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. An array with the options shown in the popup. Optional GUIStyle. 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, +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. @@ -8918,7 +10166,7 @@ GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. An array with the options shown in the popup. Optional GUIStyle. 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, +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. @@ -8933,7 +10181,7 @@ GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. An array with the options shown in the popup. Optional GUIStyle. 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, +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. @@ -8948,7 +10196,7 @@ GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. An array with the options shown in the popup. Optional GUIStyle. 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, +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. @@ -8963,7 +10211,7 @@ GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. An array with the options shown in the popup. Optional GUIStyle. 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, +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. @@ -8978,7 +10226,7 @@ GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. An array with the options shown in the popup. Optional GUIStyle. 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, +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. @@ -8993,7 +10241,7 @@ GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. An array with the options shown in the popup. Optional GUIStyle. 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, +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. @@ -9008,7 +10256,7 @@ GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. An array with the options shown in the popup. Optional GUIStyle. 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, +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. @@ -9018,7 +10266,7 @@ GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. Make a label in front of some control. - Label to show in front of the control. + Label to show to the left of the control. @@ -9026,7 +10274,7 @@ GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. Make a label in front of some control. - Label to show in front of the control. + Label to show to the left of the control. @@ -9034,7 +10282,7 @@ GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. Make a label in front of some control. - Label to show in front of the control. + Label to show to the left of the control. @@ -9042,7 +10290,7 @@ GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. Make a label in front of some control. - Label to show in front of the control. + Label to show to the left of the control. @@ -9050,7 +10298,7 @@ GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. Make a label in front of some control. - Label to show in front of the control. + Label to show to the left of the control. @@ -9058,7 +10306,7 @@ GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. Make a label in front of some control. - Label to show in front of the control. + Label to show to the left of the control. @@ -9070,7 +10318,7 @@ GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. 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 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, +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. @@ -9084,7 +10332,7 @@ GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. 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 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, +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. @@ -9098,7 +10346,7 @@ GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. 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 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, +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. @@ -9112,7 +10360,7 @@ GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. 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 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, +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. @@ -9125,7 +10373,7 @@ GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. Label to display above the field. The value to edit. 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, +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. The value entered by the user. @@ -9138,7 +10386,7 @@ GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. Label to display above the field. The value to edit. 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, +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. The value entered by the user. @@ -9151,7 +10399,7 @@ GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. Label to display above the field. The value to edit. 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, +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. The value entered by the user. @@ -9244,7 +10492,7 @@ GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. The text to show. Optional GUIStyle. 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, +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. @@ -9254,7 +10502,7 @@ GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. The text to show. Optional GUIStyle. 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, +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. @@ -9266,7 +10514,7 @@ GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. 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 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, +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. @@ -9281,7 +10529,7 @@ GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. 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 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, +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. @@ -9296,7 +10544,7 @@ GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. 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 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, +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. @@ -9311,7 +10559,7 @@ GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. 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 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, +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. @@ -9323,7 +10571,7 @@ GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. 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 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, +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. @@ -9335,7 +10583,7 @@ GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. 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 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, +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. @@ -9351,7 +10599,7 @@ GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. The tag the field shows. Optional GUIStyle. 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, +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. The tag selected by the user. @@ -9365,7 +10613,7 @@ GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. The tag the field shows. Optional GUIStyle. 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, +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. The tag selected by the user. @@ -9379,7 +10627,7 @@ GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. The tag the field shows. Optional GUIStyle. 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, +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. The tag selected by the user. @@ -9393,7 +10641,7 @@ GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. The tag the field shows. Optional GUIStyle. 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, +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. The tag selected by the user. @@ -9407,7 +10655,7 @@ GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. The tag the field shows. Optional GUIStyle. 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, +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. The tag selected by the user. @@ -9421,7 +10669,7 @@ GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. The tag the field shows. Optional GUIStyle. 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, +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. The tag selected by the user. @@ -9434,7 +10682,7 @@ GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. The text to edit. Optional GUIStyle. 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, +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. The text entered by the user. @@ -9447,7 +10695,7 @@ GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. The text to edit. Optional GUIStyle. 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, +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. The text entered by the user. @@ -9461,7 +10709,7 @@ GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. The text to edit. Optional GUIStyle. 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, +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. The text entered by the user. @@ -9475,7 +10723,7 @@ GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. The text to edit. Optional GUIStyle. 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, +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. The text entered by the user. @@ -9489,7 +10737,7 @@ GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. The text to edit. Optional GUIStyle. 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, +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. The text entered by the user. @@ -9503,7 +10751,7 @@ GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. The text to edit. Optional GUIStyle. 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, +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. The text entered by the user. @@ -9517,7 +10765,7 @@ GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. The text to edit. Optional GUIStyle. 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, +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. The text entered by the user. @@ -9531,7 +10779,7 @@ GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. The text to edit. Optional GUIStyle. 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, +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. The text entered by the user. @@ -9544,8 +10792,10 @@ GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. Optional label in front of the toggle. The shown state of the toggle. Optional GUIStyle. - 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, + 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 selected state of the toggle. @@ -9558,8 +10808,10 @@ GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. Optional label in front of the toggle. The shown state of the toggle. Optional GUIStyle. - 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, + 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 selected state of the toggle. @@ -9572,8 +10824,10 @@ GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. Optional label in front of the toggle. The shown state of the toggle. Optional GUIStyle. - 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, + 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 selected state of the toggle. @@ -9586,8 +10840,10 @@ GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. Optional label in front of the toggle. The shown state of the toggle. Optional GUIStyle. - 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, + 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 selected state of the toggle. @@ -9600,8 +10856,10 @@ GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. Optional label in front of the toggle. The shown state of the toggle. Optional GUIStyle. - 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, + 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 selected state of the toggle. @@ -9614,8 +10872,10 @@ GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. Optional label in front of the toggle. The shown state of the toggle. Optional GUIStyle. - 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, + 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 selected state of the toggle. @@ -9653,7 +10913,7 @@ GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. The value to edit. Optional GUIStyle to use for the label. 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, +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. @@ -9664,7 +10924,7 @@ GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. The value to edit. Optional GUIStyle to use for the label. 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, +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. @@ -9675,7 +10935,7 @@ GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. The value to edit. Optional GUIStyle to use for the label. 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, +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. @@ -9686,7 +10946,7 @@ GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. The value to edit. Optional GUIStyle to use for the label. 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, +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. @@ -9696,7 +10956,7 @@ GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. Label to display above the field. The value to edit. 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, +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. The value entered by the user. @@ -9709,7 +10969,7 @@ GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. Label to display above the field. The value to edit. 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, +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. The value entered by the user. @@ -9721,8 +10981,9 @@ GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. Label to display above the field. The value to edit. - 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, + 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 value entered by the user. @@ -9734,8 +10995,9 @@ GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. Label to display above the field. The value to edit. - 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, + 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 value entered by the user. @@ -9748,7 +11010,7 @@ GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. Label to display above the field. The value to edit. 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, +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. The value entered by the user. @@ -9770,7 +11032,7 @@ GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. 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, +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. @@ -9779,7 +11041,7 @@ GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. 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, +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. @@ -9817,6 +11079,13 @@ GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. 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. @@ -9860,9 +11129,9 @@ GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - Creates an event. + Creates an event that can be sent to another window. - + The command to be sent. @@ -9965,15 +11234,26 @@ GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. Fetch the GUIContent from the Unity builtin resources with the given name. - Content name. - Tooltip. + Name of the desired icon. + Tooltip for hovering over the icon. Fetch the GUIContent from the Unity builtin resources with the given name. - Content name. - Tooltip. + 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. @@ -9992,7 +11272,7 @@ GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - Load a built-in resource that has to be there. + Load a required built-in resource. @@ -10031,18 +11311,54 @@ GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - Ping an object in a window like clicking it in an inspector. + Ping an object in the Scene like clicking it in an inspector. - + The object to be pinged. - Ping an object in a window like clicking it in an inspector. + 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. @@ -10087,14 +11403,14 @@ GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. 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. @@ -10104,7 +11420,7 @@ GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. The object's data in JSON format. - + Generate a JSON representation of an object. @@ -10146,31 +11462,45 @@ GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - 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 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 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. + @@ -10188,9 +11518,12 @@ GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - Returns true if key exists in the preferences. + Returns true if key exists in the preferences file. - + Name of key to check for. + + The existence or not of the key. + @@ -10201,25 +11534,45 @@ GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - 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. + 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. @@ -10490,19 +11843,19 @@ GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. Android platform options. - + - The texture compression type to be used when building. + Set which build system to use for building the Android package. - + - The build type to be used. + Is build script only enabled. - + - Is build script only enabled. + Compress files in package. @@ -10525,6 +11878,11 @@ GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. Enables a Linux headless build. + + + Are divide by zero's actively checked? + + Are null references actively checked? @@ -10532,7 +11890,7 @@ GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - Export Android Project for use wih Android Studio or Eclipse. + Export Android Project for use with Android StudioGradle or EclipseADT. @@ -10550,6 +11908,11 @@ GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. Place the built player in the build folder. + + + Scheme with which the project will be run in Xcode. + + Create a .cia "download image" for deploying to test kits (3DS). @@ -10565,6 +11928,11 @@ GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. PS4 Build Subtarget. + + + Specifies which version of PS4 hardware to target. + + PSM Build Subtarget. @@ -10575,11 +11943,6 @@ GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. PS Vita Build subtarget. - - - SCE Build subtarget. - - The currently selected build target group. @@ -10605,9 +11968,9 @@ GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. The texture compression type to be used when building. - + - Optimization level for WebGL. + Use prebuilt JavaScript version of Unity engine. @@ -10650,6 +12013,16 @@ GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. Target Windows SDK. + + + 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. + + Xbox Build subtarget. @@ -10671,17 +12044,19 @@ MYCOMPUTER\SHAREDFOLDER\. Windows account username associated with PC share folder. - - - Selected Xbox Run Method. - - 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. @@ -10699,6 +12074,14 @@ More information - https:msdn.microsoft.comen-uslibrary/dn584397(v=vs.110).aspx. + + + 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. @@ -10721,6 +12104,11 @@ More information - https:msdn.microsoft.comen-uslibrary/dn584397(v=vs.110).aspx. Editor utility functions. + + + True if there are any compilation error messages in the log. + + Removes progress bar. @@ -10741,6 +12129,22 @@ More information - https:msdn.microsoft.comen-uslibrary/dn584397(v=vs.110).aspx. + + + Compress a cubemap texture. + + + + + + + + Compress a cubemap texture. + + + + + Compress a texture. @@ -10764,6 +12168,13 @@ More information - https:msdn.microsoft.comen-uslibrary/dn584397(v=vs.110).aspx. + + + Copy all settings of a Unity Object to a second Object if they differ. + + + + Creates a game object with HideFlags and specified components. @@ -10802,11 +12213,14 @@ More information - https:msdn.microsoft.comen-uslibrary/dn584397(v=vs.110).aspx. Displays a modal dialog with three buttons. - - - - - + Title for dialog. + Purpose for the dialog. + Dialog function chosen. + Choose alternative dialog purpose. + Close dialog with no operation. + + The id of the chosen button. + @@ -10919,9 +12333,9 @@ More information - https:msdn.microsoft.comen-uslibrary/dn584397(v=vs.110).aspx. - Marks target object as dirty. + Marks target object as dirty. (Only suitable for non-scene objects). - + The object to mark as dirty. @@ -10930,9 +12344,16 @@ More information - https:msdn.microsoft.comen-uslibrary/dn584397(v=vs.110).aspx. + + + Set the Scene View selected display mode for this Renderer. + + + + - Set whether the renderer's wireframe will be hidden when the renderer's gameobject is selected. + Sets whether the selected Renderer's wireframe will be hidden when the GameObject it is attached to is selected. @@ -10943,7 +12364,7 @@ More information - https:msdn.microsoft.comen-uslibrary/dn584397(v=vs.110).aspx. When true delete assets even if linked in scripts. - + Unloads assets that are not used. @@ -10999,9 +12420,14 @@ More information - https:msdn.microsoft.comen-uslibrary/dn584397(v=vs.110).aspx. The GUIContent used for drawing the title of EditorWindows. + + + Checks whether MouseEnterWindow and MouseLeaveWindow events are received in the GUI in this Editor window. + + - Does the GUI in this editor window want MouseMove events? + Checks whether MouseMove events are received in the GUI in this Editor window. @@ -11250,10 +12676,10 @@ More information - https:msdn.microsoft.comen-uslibrary/dn584397(v=vs.110).aspx. - Show window with dropdown behaviour (e.g. window is closed when it loses focus) and having. + Shows a window with dropdown behaviour and styling. - Is used for positioning the window. - Is used for setting up initial size of the window. + The button from which the position of the window will be determined (see description). + The initial size of the window. @@ -11872,6 +13298,21 @@ More information - https:msdn.microsoft.comen-uslibrary/dn584397(v=vs.110).aspx. Draw the gizmo if it is selected. + + + Enum used to specify the graphics jobs mode to use. + + + + + Legacy graphics jobs. + + + + + Native graphics jobs. + + Base class for PropertyDrawer and DecoratorDrawer. @@ -11937,14 +13378,20 @@ More information - https:msdn.microsoft.comen-uslibrary/dn584397(v=vs.110).aspx. 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 world-space position of the handle's start point. - The rotation of the handle. - The size of the handle in world-space units. + 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. @@ -11958,27 +13405,38 @@ More information - https:msdn.microsoft.comen-uslibrary/dn584397(v=vs.110).aspx. The position and size of the 2D GUI area. - + Make a 3D Button. - The world-space position to draw the button. - The rotation of the button. - The visual size of the button. - The size of the button for the purpose of detecting a click. - The draw style of the 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. - + - Draw a camera-facing Circle. Pass this into handle functions. + The function to use for drawing the handle e.g. Handles.RectangleCap. The control ID for the handle. - The world-space position for the start of the handle. - The rotation of 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. @@ -11987,54 +13445,60 @@ More information - https:msdn.microsoft.comen-uslibrary/dn584397(v=vs.110).aspx. Where in the Scene to clear. The camera to clear. - + - Draw a Cone. Pass this into handle functions. + Draw a cone handle. Pass this into handle functions. The control ID for the handle. - The world-space position of the handle's start point. - The rotation of the handle. - The size of the handle in world-space units. + 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. Pass this into handle functions. + Draw a cube handle. Pass this into handle functions. The control ID for the handle. - The world-space position of the handle's start point. - The rotation of the handle. - The size of the handle in world-space units. + 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. Pass this into handle functions. + Draw a cylinder handle. Pass this into handle functions. The control ID for the handle. - The world-space position of the handle's start point. - The rotation of the handle. - The size of the handle in world-space units. + 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. + Make a 3D disc that can be dragged with the mouse. +Note: Use HandleUtility.GetHandleSize where you might want to have constant screen-sized handles. The rotation of the disc. The center of the disc. The axis to rotate around. The size of the disc in world space See Also:HandleUtility.GetHandleSize. 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 new value after the user has modified it. - -Note: Use HandleUtility.GetHandleSize where you might want to have constant screen-sized handles. + 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 camera-facing dot. Pass this into handle functions. + Draw a dot handle. Pass this into handle functions. The control ID for the handle. - The world-space position of the handle's start point. - The rotation of the handle. - The size of the handle in world-space units. + 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. @@ -12124,15 +13588,6 @@ Note: Use HandleUtility.GetHandleSize where you might want to have constant scre The camera to draw. How the camera is drawn (textured, wireframe, etc.). - - - The function to use for drawing the handle e.g. Handles.RectangleCap. - - - - - - Draw a dotted line from p1 to p2. @@ -12156,6 +13611,47 @@ Note: Use HandleUtility.GetHandleSize where you might want to have constant scre 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. + + + 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. @@ -12182,6 +13678,16 @@ Note: Use HandleUtility.GetHandleSize where you might want to have constant scre + + + Draw a camera facing selection frame. + + + + + + + Draw a circular sector (pie piece) in 3D space. @@ -12224,6 +13730,13 @@ Note: Use HandleUtility.GetHandleSize where you might want to have constant scre 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. @@ -12239,17 +13752,18 @@ Note: Use HandleUtility.GetHandleSize where you might want to have constant scre End a 2D GUI block and get back to the 3D handle GUI. - + Make an unconstrained movement handle. - The position of the handle. - The rotation of the handle. this defines the space along. - The size of the handle. - The function to use for drawing the handle, eg, Handles.RectangleCap - -Note: Use HandleUtility.GetHandleSize where you might want to have constant screen-sized handles. - + 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 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. + @@ -12260,6 +13774,9 @@ Note: Use HandleUtility.GetHandleSize where you might want to have constant scre 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. + @@ -12338,14 +13855,12 @@ Note: Use HandleUtility.GetHandleSize where you might want to have constant scre - Make a 3D Scene view position handle. + Make a position handle. Center of the handle in 3D space. Orientation of the handle in 3D space. - The new position. If the user has not performed any operation, it will return the same value as you passed it in postion. - -Note: Use HandleUtility.GetHandleSize where you might want to have constant screen-sized 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. @@ -12355,9 +13870,9 @@ Note: Use HandleUtility.GetHandleSize where you might want to have constant scre 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 modified radius + 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. @@ -12369,13 +13884,23 @@ Note: Use HandleUtility.GetHandleSize where you might want to have constant scre 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 modified radius + 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. @@ -12383,23 +13908,21 @@ Note: Use HandleUtility.GetHandleSize where you might want to have constant scre Orientation of the handle. Center of the handle in 3D space. - The modified rotation - -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 a Scene view scale handle. + Make a Scene view scale handle. + +Note: Use HandleUtility.GetHandleSize where you might want to have constant screen-sized handles. 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 scale vector. - -Note: Use HandleUtility.GetHandleSize where you might want to have constant screen-sized 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. @@ -12407,35 +13930,28 @@ Note: Use HandleUtility.GetHandleSize where you might want to have constant scre Make a directional scale slider. The value the user can modify. - The position of the handle. - The direction of the handle. - The rotation of whole object. - The size of the handle. - The new value after the user has modified it. - -Note: Use HandleUtility.GetHandleSize where you might want to have constant screen-sized handles. + 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 single-float draggable handle. + Make a 3D handle that scales a single float. The value the user can modify. - The position of the handle. - The rotation of the handle. - The size of the handle. - The function to use for drawing the handle e.g. Handles.RectangleCap. - The new value after the user has modified it. - -Note: Use HandleUtility.GetHandleSize where you might want to have constant screen-sized handles. - - - - Draw a camera facing selection frame. - - - - - + 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. + @@ -12451,193 +13967,113 @@ Note: Use HandleUtility.GetHandleSize where you might want to have constant scre - - - Make a 3D slider. - - The position of the current point. - The direction of the sliding. - 3D size the size of the handle. - The function to call for doing the actual drawing - by default, it's Handles.ArrowCap, but any function that has the same signature can be used. - The snap value (see Handles.SnapValue). - -Note: Use HandleUtility.GetHandleSize where you might want to have constant screen-sized handles. - - + - Make a 3D slider. + A delegate type for getting a handle's size based on its current position. - The position of the current point. - The direction of the sliding. - 3D size the size of the handle. - The function to call for doing the actual drawing - by default, it's Handles.ArrowCap, but any function that has the same signature can be used. - The snap value (see Handles.SnapValue). - -Note: Use HandleUtility.GetHandleSize where you might want to have constant screen-sized handles. - - - - Slide a handle in a 2D plane. - - (optional) override the default ControlID for this Slider2D instance. - The position of the current point. - (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, only used for rendering of the handle. - The first direction of the sliding. - The second direction of the sliding. - The size of the handle. - The function to call for doing the actual drawing - by default, it's Handles.ArrowCap, but any function that has the same signature can be used. - (float or Vector2) set the snap increment (Pass a Vector2 to use separate snap increments in each dimension). - (default: false) render a rectangle around the handle when dragging. - - The new handle position - -Note: Use HandleUtility.GetHandleSize where you might want to have constant screen-sized handles. - - - - - Slide a handle in a 2D plane. - - (optional) override the default ControlID for this Slider2D instance. - The position of the current point. - (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, only used for rendering of the handle. - The first direction of the sliding. - The second direction of the sliding. - The size of the handle. - The function to call for doing the actual drawing - by default, it's Handles.ArrowCap, but any function that has the same signature can be used. - (float or Vector2) set the snap increment (Pass a Vector2 to use separate snap increments in each dimension). - (default: false) render a rectangle around the handle when dragging. - - The new handle position - -Note: Use HandleUtility.GetHandleSize where you might want to have constant screen-sized handles. - + The current position of the handle in the space of Handles.matrix. - + - Slide a handle in a 2D plane. + Make a 3D slider that moves along one axis. - (optional) override the default ControlID for this Slider2D instance. - The position of the current point. - (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, only used for rendering of the handle. - The first direction of the sliding. - The second direction of the sliding. - The size of the handle. - The function to call for doing the actual drawing - by default, it's Handles.ArrowCap, but any function that has the same signature can be used. - (float or Vector2) set the snap increment (Pass a Vector2 to use separate snap increments in each dimension). - (default: false) render a rectangle around the handle when dragging. + 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 handle position - -Note: Use HandleUtility.GetHandleSize where you might want to have constant screen-sized 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 position value passed into the function. - + - Slide a handle in a 2D plane. + Make a 3D slider that moves along one axis. - (optional) override the default ControlID for this Slider2D instance. - The position of the current point. - (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, only used for rendering of the handle. - The first direction of the sliding. - The second direction of the sliding. - The size of the handle. - The function to call for doing the actual drawing - by default, it's Handles.ArrowCap, but any function that has the same signature can be used. - (float or Vector2) set the snap increment (Pass a Vector2 to use separate snap increments in each dimension). - (default: false) render a rectangle around the handle when dragging. + 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 handle position - -Note: Use HandleUtility.GetHandleSize where you might want to have constant screen-sized 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 position value passed into the function. - + - Slide a handle in a 2D plane. + 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. + 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, only used for rendering of the handle. - The first direction of the sliding. - The second direction of the sliding. - The size of the handle. - The function to call for doing the actual drawing - by default, it's Handles.ArrowCap, but any function that has the same signature can be used. - (float or Vector2) set the snap increment (Pass a Vector2 to use separate snap increments in each dimension). + 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 handle position - -Note: Use HandleUtility.GetHandleSize where you might want to have constant screen-sized 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 position value passed into the function. - + - Slide a handle in a 2D plane. + 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. + 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, only used for rendering of the handle. - The first direction of the sliding. - The second direction of the sliding. - The size of the handle. - The function to call for doing the actual drawing - by default, it's Handles.ArrowCap, but any function that has the same signature can be used. - (float or Vector2) set the snap increment (Pass a Vector2 to use separate snap increments in each dimension). + 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 handle position - -Note: Use HandleUtility.GetHandleSize where you might want to have constant screen-sized 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 position value passed into the function. - + - Slide a handle in a 2D plane. + 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. + 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, only used for rendering of the handle. - The first direction of the sliding. - The second direction of the sliding. - The size of the handle. - The function to call for doing the actual drawing - by default, it's Handles.ArrowCap, but any function that has the same signature can be used. - (float or Vector2) set the snap increment (Pass a Vector2 to use separate snap increments in each dimension). + 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 handle position - -Note: Use HandleUtility.GetHandleSize where you might want to have constant screen-sized 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 position value passed into the function. - + - Slide a handle in a 2D plane. + 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. + 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, only used for rendering of the handle. - The first direction of the sliding. - The second direction of the sliding. - The size of the handle. - The function to call for doing the actual drawing - by default, it's Handles.ArrowCap, but any function that has the same signature can be used. - (float or Vector2) set the snap increment (Pass a Vector2 to use separate snap increments in each dimension). + 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 handle position - -Note: Use HandleUtility.GetHandleSize where you might want to have constant screen-sized 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 position value passed into the function. - Rounds the value val to the closest multiple of snap (snap can only be posiive). + Rounds the value val to the closest multiple of snap (snap can only be positive). @@ -12645,14 +14081,15 @@ Note: Use HandleUtility.GetHandleSize where you might want to have constant scre The rounded value, if snap is positive, and val otherwise. - + - Draw a Sphere. Pass this into handle functions. + 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. @@ -12807,7 +14244,16 @@ Note: Use HandleUtility.GetHandleSize where you might want to have constant scre 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. + + @@ -13027,2660 +14473,4971 @@ Note: Use HandleUtility.GetHandleSize where you might want to have constant scre Highlights an entire editor control using its label text as identifier. - + - Asset importing options. + Use IHVImageFormatImporter to modify Texture2D import settings for Textures in IHV (Independent Hardware Vendor) formats such as .DDS and .PVR from Editor scripts. - + - Default import options. + Filtering mode of the texture. - + - Force a full reimport but don't download the assets from the cache server. + Is texture data readable from scripts. - + - Import all assets synchronously. + Wrap mode of the texture. - + - Forces asset import as uncompressed for edition facilities. + A compound handle to edit a box-shaped bounding volume in the Scene view. - + - User initiated asset import. + Gets or sets the size of the bounding box. - + - When a folder is imported, import all its contents as well. + Create a new instance of the BoxBoundsHandle class. + An integer value used to generate consistent control IDs for each control handle on this instance. You may use any value you like, but should avoid using the same value for all of your PrimitiveBoundsHandle instances. - + - Allow an editor class to be initialized when Unity loads without action from the user. + Draw a wireframe box for this instance. - + - Allow an editor class method to be initialized when Unity loads without action from the user. + A compound handle to edit a capsule-shaped bounding volume in the Scene view. - + - A device requirement description used for configuration of App Slicing. + Gets or sets the height of the capsule bounding volume. - + - The values of the device requirement description. + Gets or sets the axis in the handle's space to which height maps. The radius maps to the remaining axes. - + - Constructs new device requirement description. + Gets or sets the radius of the capsule bounding volume. - + - Supported iOS SDK versions. + Create a new instance of the CapsuleBoundsHandle class. + An integer value used to generate consistent control IDs for each control handle on this instance. You may use any value you like, but should avoid using the same value for all of your PrimitiveBoundsHandle instances. - + - Device SDK. + Draw a wireframe capsule for this instance. - + - Simulator SDK. + An enumeration for specifying which axis on a CapsuleBoundsHandle object maps to the CapsuleBoundsHandle.height parameter. - + - Activity Indicator on loading. + X-axis. - + - Don't Show. + Y-axis. - + - Gray. + Z-axis. - + - White. + 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. + - + - White Large. + 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. - + - iOS status bar style. + Use this property to control whether sorting is enabled for all the columns. - + - Black opaque. + Customizable height of the multi column header. - + - Black translucent. + 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. - + - Default. + Subscribe to this event to get notified when sorting has changed. + - + - Target iOS device. + This is the state of the MultiColumnHeader. - + - iPad Only. + Subscribe to this event to get notified when the number of visible columns has changed. + - + - Universal : iPhone/iPod + iPad. + Override this method to extend the default context menu items shown when context clicking the header area. + Context menu shown. - + - iPhone/iPod Only. + Override to customize the behavior when clicking a column header. + Column clicked. + Column index clicked. - + - Supported iOS deployment versions. + Override to customize the GUI of a single column header. + Column header data. + Rect for column header. + Column index. - + - iOS 4.0. + Constructor. + Column header state and Column state. - + - iOS 4.1. + Default GUI methods and properties for the MultiColumnHeader class. - + - iOS 4.2. + Margin that can be used by clients of the MultiColumnHeader to control spacing between content in multiple columns. - + - iOS 4.3. + Default height of the header. - + - iOS 5.0. + This height is the minium height the header can have and can only be used if sorting is disabled. - + - iOS 5.1. + Default styles used by the MultiColumnHeader class. - + - iOS 6.0. + Style used for rendering the background of the header. - + - iOS 7.0. + Style used for left aligned header text. - + - iOS 7.1. + Style used for centered header text. - + - iOS 8.0. + Style used for right aligned header text. - + - iOS 8.1. + Calculates a cell rect for a column and row using the visibleColumnIndex and rowRect parameters. + + - + - Unknown iOS version, managed by user. + Returns the column data for a given column index. + Column index. + + Column data. + - + - The lighting data asset used by the active scene. + Returns the header column Rect for a given visible column index. + Index of a visible column. - + - Bake quality setting for LightmapEditorSettings. + Convert from column index to visible column index. + Column index. + + Visible column index. + - + - High quality bake for final renderings. + Delegate used for events from the MultiColumnHeader. + The MultiColumnHeader that dispatched this event. - + - Low quality bake for preview renderings. + Check if a column is currently visible in the MultiColumnHeader. + Column index. - + - Various settings for the bake. + Check the sorting order state for a column. + Column index. + + True if sorted ascending. + - + - Beyond this distance a ray is considered to be unoccluded. + Render and handle input for the MultiColumnHeader at the given rect. + Horizontal scroll offset. + Rect where the MultiColumnHeader is drawn in. - + - The maximum height of an individual lightmap texture. - - - - - The maximum width of an individual lightmap texture. - - - - - Texel separation between shapes. - - - - - Determines how Unity will compress baked reflection cubemap. + Called when sorting changes and dispatches the sortingChanged event. - + - Lightmap resolution in texels per world unit. Higher resolution may take a long time to bake. + Called when the number of visible column changes and dispatches the visibleColumnsChanged event. - + - Whether to use DXT1 compression on the generated lightmaps. + Requests the window which contains the MultiColumnHeader to repaint. - + - A collection of parameters that impact lightmap and realtime GI computations. + 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. - + - The maximum number of times to supersample a texel to reduce aliasing. + Change sort direction for a given column. + Column index. + Direction of the sorting. - + - The percentage of rays shot from a ray origin that must hit front faces to be considered usable. + Sets the primary sorting column and its sorting order. + Column to sort. + Sorting order for the column specified. - + - 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. + Sets multiple sorting columns and the associated sorting orders. + Column indices of the sorted columns. + Sorting order for the column indices specified. - + - The radius (in texels) of the post-processing filter that blurs baked direct lighting. + Provides the button logic for a column header and the rendering of the sorting arrow (if visible). + Column data. + Column header rect. + Column index. - + - Controls the resolution at which Enlighten stores and can transfer input light. + Method for toggling the visibility of a column. + Toggle visibility for this column. - + - The number of rays used for lights with an area. Allows for accurate soft shadowing. + State used by the MultiColumnHeader. - + - Whether pairs of edges should be stitched together. + The array of column states used by the MultiColumnHeader class. - + - 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. + This property controls the maximum number of columns returned by the sortedColumns property. - + - The number of rays to cast for computing irradiance form factors. + This property holds the index to the primary sorted column. - + - If enabled, the object appears transparent during GlobalIllumination lighting calculations. + The array of column indices for multiple column sorting. - + - Maximum size of gaps that can be ignored for GI (multiplier on pixel size). + This is the array of currently visible column indices. - + - The texel resolution per meter used for realtime lightmaps. This value is multiplied by LightmapEditorSettings.resolution. + Returns the sum of all the widths of the visible columns in the visibleColumns array. - + - 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. + 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. + - + - The maximum number of times to supersample a texel to reduce aliasing in AO. + Column state. - + - The number of rays to cast for computing ambient occlusion. + Option to allow/disallow hiding the column from the context menu. - + - Allows to control the lightmapping job. + Option to allow the column to resize automatically when resizing the entire MultiColumnHeader. - + - Boost the albedo. + Is sorting enabled for this column. If false, left-clicking this column header has no effect. - + - Returns the current lightmapping build progress or 0 if Lightmapping.isRunning is false. + If this is set then it is used for the context menu for toggling visibility, if not set then the ::headerContent is used. - + - Delegate which is called when bake job is completed. + This is the GUIContent that will be rendered in the column header. - + - 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. + Alignment of the header content. - + - Scale for indirect lighting. + Maximum width of the column. - + - Returns true when the bake job is running, false otherwise (Read Only). + Minimum width of the column. - + - The lighting data asset used by the active scene. + Value that controls if this column is sorted ascending or descending. - + - Stars a synchronous bake job. + Alignment of the sorting arrow. - + - Starts an asynchronous bake job. + The width of the column. - + - Starts a synchronous bake job, but only bakes light probes. + Constructor. + Column data. - + - Starts an asynchronous bake job, but only bakes light probes. + 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. - + - Bakes an array of scenes. + Base class for a compound handle to edit a bounding volume in the Scene view. - The path of the scenes that should be baked. - + - Starts a synchronous bake job for the probe. + Flags specifying which axes should display control handles. - Target probe. - The location where cubemap will be saved. - - Returns true if baking was succesful. - - + - Starts a synchronous bake job for the selected objects. + Gets or sets the center of the bounding volume for the handle. - + - Starts an asynchronous bake job for the selected objects. + Specifies the color of the control handles. - + - Cancels the currently running asynchronous bake job. + An optional Handles.CapFunction to use when displaying the control handles. Defaults to Handles.DotHandleCap if no value is specified. - + - Deletes all lightmap assets and makes all lights behave as if they weren't baked yet. + An optional Handles.HandleSizeFunction to specify how large the control handles should be in the space of Handles.matrix. Defaults to a fixed screen-space size. - + - Clears the cache used by lightmaps, reflection probes and default reflection. + Specifies the color of the wireframe shape. - + - Remove the lighting data asset used by the current scene. + A flag enumeration for specifying which axes on a PrimitiveBoundsHandle object should be enabled. - + - Get how many chunks the terrain is divided into for GI baking. + All axes. - The terrain. - Number of chunks in terrain width. - Number of chunks in terrain length. - + - Workflow mode for lightmap baking. Default is Iterative. + No axes. - + - Always run lightmapping, changes to the scene are detected automatically. + X-axis (bit 0). - + - Deprecated 4.x lightmapping support. + Y-axis (bit 1). - + - Run lightmapping only when the user presses the bake button. + Z-axis (bit 2). - + - Delegate used by Lightmapping.completed callback. + Create a new instance of the PrimitiveBoundsHandle class. + An integer value used to generate consistent control IDs for each control handle on this instance. You may use any value you like, but should avoid using the same value for all of your PrimitiveBoundsHandle instances. - + - Calculates a Delaunay Tetrahedralization of the 'positions' point set - the same way the lightmapper. + A function to display this instance in the current handle camera using its current configuration. - - - - + - LOD Utility Helpers. + Draw a wireframe shape for this instance. Subclasses must implement this method. - + - Recalculate the bounding region for the given LODGroup. + Gets the current size of the bounding volume for this instance. - + + The current size of the bounding volume for this instance. + - + - Mac fullscreen mode. + An enumeration of directions the handle moves in. - + - Capture the display. + This value corresponds to the handle moving in a negative direction away from PrimitiveBoundsHandle.center along the x-axis. - + - Fullscreen window. + This value corresponds to the handle moving in a negative direction away from PrimitiveBoundsHandle.center along the y-axis. - + - Fullscreen window with Dock and Menu bar. + This value corresponds to the handle moving in a negative direction away from PrimitiveBoundsHandle.center along the z-axis. - + - The Unity Material Editor. + This value corresponds to the handle moving in a positive direction away from PrimitiveBoundsHandle.center along the x-axis. - + - Is the current material expanded. + This value corresponds to the handle moving in a positive direction away from PrimitiveBoundsHandle.center along the y-axis. - + - Useful for indenting shader properties that need the same indent as mini texture field. + This value corresponds to the handle moving in a positive direction away from PrimitiveBoundsHandle.center along the z-axis. - + - Apply initial MaterialPropertyDrawer values. + 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. + - + - Apply initial MaterialPropertyDrawer values. + 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. + - + - Called when the Editor is woken up. + 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. + - + - Draw a property field for a color shader property. + Set handleColor and wireframeColor to the same value. - Label for the property. - - + The color to use for the control handles and the wireframe shape. - + - Draw a property field for a color shader property. + Sets the current size of the bounding volume for this instance. - Label for the property. - - + A Vector3 specifying how large the bounding volume is along all of its axes. - + - Default handling of preview area for materials. + The SearchField control creates a text field for a user to input text that can be used for searching. - - - + - Default toolbar for material preview area. + Changes the keyboard focus to the search field when the user presses ‘Ctrl/Cmd + F’ when set to true. It is true by default. - + - Handles UI for one shader property ignoring any custom drawers. + 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. - - - + - + - Handles UI for one shader property ignoring any custom drawers. + This is the controlID used for the text field to obtain keyboard focus. - - - - + - Draw a property field for a float shader property. + This function returns true if the search field has keyboard focus. - Label for the property. - - - + - Draw a property field for a float shader property. + 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. - Label for the property. - - + 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. + - + - Calculate height needed for the property, ignoring custom drawers. + 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. + - + - Utility method for GUI layouting ShaderGUI. Used e.g for the rect after a left aligned Color field. + This function displays a search text field with the given Rect and UI style parameters. - Field Rect. + 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. - A sub rect of the input Rect. + The text entered in the SearchField. The original input string is returned instead if the search field text was not changed. - + - Utility method for GUI layouting ShaderGUI. + 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. - Field Rect. + 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. - A sub rect of the input Rect. + The text entered in the search field. The original input string is returned instead if the search field text was not changed. - + - Utility method for GUI layouting ShaderGUI. + This function displays the search field with a toolbar style in the given Rect. - Field Rect. + Rectangle to use for the search field. + Text string to display in the search field. - A sub rect of the input Rect. + The text entered in the search field. The original input string is returned instead if the search field text was not changed. - + - Get shader property information of the passed materials. + This is a generic callback delegate for SearchField events and does not take any parameters. - - + - Get information about a single shader property. + This function changes keyboard focus to the search field so a user can start typing. - Selected materials. - Property name. - Property index. - + - Get information about a single shader property. + A compound handle to edit a sphere-shaped bounding volume in the Scene view. - Selected materials. - Property name. - Property index. - + - Calculate height needed for the property. + Gets or sets the radius of the capsule bounding volume. - - - + - Calculate height needed for the property. + Create a new instance of the SphereBoundsHandle class. - - + An integer value used to generate consistent control IDs for each control handle on this instance. You may use any value you like, but should avoid using the same value for all of your PrimitiveBoundsHandle instances. - + - 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. + Draw a wireframe sphere for this instance. - Line Rect. - - A sub rect of the input Rect. - - + - Utility method for GUI layouting ShaderGUI. + A callback for when a control handle was dragged in the scene. - Field Rect. + 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. - A sub rect of the input Rect. + The bounds that should be applied to this instance, with any necessary modifications applied. - + - Get the value of a given texture offset for a given texture property. + The TreeView is an IMGUI control that lets you create tree views, list views and multi-column tables for Editor tools. - 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. + Indent used for all rows before the tree foldout arrows and content. - The total rect of the texture property. - + - Get the value of a given texture scale for a given texture property. + When using a MultiColumnHeader this value adjusts the cell rects provided for all columns except the tree foldout column. - 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? + When using a MultiColumnHeader this value should be set to the column index in which the foldout arrows should appear. - - 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. + Custom vertical offset of the foldout arrow. - The message text. - The button text. - - Returns true, if button was pressed. - - + - This function will draw the UI for the lightmap emission property. (None, Realtime, baked) - -See Also: MaterialLightmapFlags. + Value that returns how far the foldouts are indented for each increasing depth value. - + - This function will draw the UI for the lightmap emission property. (None, Realtime, baked) - -See Also: MaterialLightmapFlags. + 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. - + - This function will draw the UI for the lightmap emission property. (None, Realtime, baked) - -See Also: MaterialLightmapFlags. + Width of the built-in foldout arrow. - + - Called when the editor is disabled, if overridden please call the base OnDisable() to ensure that the material inspector is set up properly. + The current search state of the TreeView. - + - Called when the editor is enabled, if overridden please call the base OnEnable() to ensure that the material inspector is set up properly. + True if the user is currently dragging one or more items in the TreeView, and false otherwise. - + - 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. + The TreeView is initialized by calling Reload(). Therefore returns false until Reload() is called the first time. - + - Custom preview for Image component. + Get the MultiColumnHeader of the TreeView. Can be null if the TreeView was created without a MultiColumnHeader. - Rectangle in which to draw the preview. - Background image. - + - Whenever a material property is changed call this function. This will rebuild the inspector and validate the properties. + The hidden root item of the TreeView (it is never rendered). - + - Default rendering of shader properties. + The fixed height used for each row in the TreeView if GetCustomRowHeight have not been overridden. - 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. + Current search string of the TreeView. - - Returns true if any value was changed. - - + - Draw a range slider for a range shader property. + Enable this to show alternating row background colors. - Label for the property. - - - + - Draw a range slider for a range shader property. + Enable this to show a border around the TreeView. - Label for the property. - - - + - Call this when you change a material property. It will add an undo for the action. + Returns true if the horizontal scroll bar is showing, otherwise false. - Undo Label. - + - Does this edit require to be repainted constantly in its current state? + Returns true if the vertical scroll bar is showing, otherwise false. - + - Set EditorGUIUtility.fieldWidth and labelWidth to the default values that PropertiesGUI uses. + The state of the TreeView (expanded state, selection, scroll etc.) - + - Set the shader of the material. + Returns the sum of the TreeView row heights, the MultiColumnHeader height (if used) and the border (if used). - Shader to set. - Should undo be registered. - - + - Set the shader of the material. + The controlID used by the TreeView to obtain keyboard control focus. - Shader to set. - Should undo be registered. - - + - Set the offset of a given texture property. + The Rect the TreeView is being rendered to. - 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. + Adds the expanded rows of the full tree to the input list. Only use this method if a full tree was built in BuildRoot. - 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). + Root of the TreeView. + Rows that will be refilled using the expanded state of TreeView. - + - Handes UI for one shader property. + This is called after all rows have their RowGUI called. - - - - + - Handes UI for one shader property. + This is called before any rows have their RowGUI called. - - - - + - 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. + Shows the rename overlay for a TreeViewItem. - The texture property to check and display warning for, if necessary. + Item to rename. + Delay in seconds until the rename overlay shows. + + Returns true if renaming was started. Returns false if renaming was already active. + - + - Draw a property field for a texture shader property. + Shows the rename overlay for a TreeViewItem. - Label for the field. - Draw scale / offset. - - - + Item to rename. + Delay in seconds until the rename overlay shows. + + Returns true if renaming was started. Returns false if renaming was already active. + - + - Draw a property field for a texture shader property. + Abstract method that is required to be implemented. By default this method should create the full tree of TreeViewItems and return the root. - Label for the field. - Draw scale / offset. - - - + + The root of the tree. This item can later be accessed by 'rootItem'. + - + - Draw a property field for a texture shader property. + Override this method to take control of how the rows are generated. - Label for the field. - Draw scale / offset. - - - + Root item that was created in the BuildRoot method. + + The rows list shown in the TreeView. Can later be accessed using GetRows(). + - + - Draw a property field for a texture shader property. + Override this method to control which items are allowed to be parents. - Label for the field. - Draw scale / offset. - - - + Can this item be a parent? - + - Draw a property field for a texture shader property. + Override this method to control whether an item can be expanded or collapsed by key or mouse. - Label for the field. - Draw scale / offset. - - - + Can this item be expanded/collapsed. - + - Draw a property field for a texture shader property that only takes up a single line height. + Override this method to control whether the item can be part of a multiselection. - Rect that this control should be rendered in. - Label for the field. - - - - Returns total height used by this control. - + Can this item be part of a multiselection. - + - Method for showing a texture property control with additional inlined properites. + Override this method to control whether the item can be renamed using a keyboard shortcut or when clicking an already selected item. - 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. - + Can this item be renamed? - + - Method for showing a texture property control with additional inlined properites. + This function is called whenever a TreeViewItem is clicked and dragged. It returns false by default. - 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. + Method arguments for the CanStartDrag virtual method. - 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. + Item about to be dragged. - 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 multi-selection about to be dragged. - The label used for the texture property. - The texture property. - The color property (will be treated as a HDR color). - The HDR color configuration used by the HDR Color Picker. - 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. + Modifies the input rect so it is centered and have a height equal to EditorGUIUtility.singleLineHeight. - 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'. + Rect to be modified and centered. - + - Draws tiling and offset properties for a texture. + Collapse all expanded items in the TreeView. - 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. + This function is called automatically and handles the ExecuteCommand events for “SelectAll” and “FrameSelection”. Override this function to extend or avoid Command events. - - - - + - TODO. + Override this method to handle context clicks outside any items (but still in the TreeView rect). - - - - + - Draw a property field for a vector shader property. + Override this method to handle a context click on an item with ID TreeViewItem.id. - Label for the field. - - + TreeViewItem id. - + - Draw a property field for a vector shader property. + Creates a dummy TreeViewItem list. Useful when overriding BuildRows to prevent building a full tree of items. - Label for the field. - - - + - Describes information and value of a single shader property. + 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. - + - Color value of the property. + 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. - + - Display name of the property (Read Only). + Default GUI methods and properties for the TreeView class. - + - Flags that control how property is displayed (Read Only). + 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. - + - Float vaue of the property. + 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. - + - Does this property have multiple different values? (Read Only) + 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. - + - Name of the property (Read Only). + 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. - + - Min/max limits of a ranged float property (Read Only). + 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. - + - Material objects being edited by this property (Read Only). + Default styles used by the TreeView class. - + - Texture dimension (2D, Cubemap etc.) of the property (Read Only). + Background style used for alternating row background colors when enabling TreeView.showAlternatingRowBackgrounds. - + - Texture value of the property. + Background style used for alternating row background colors when enabling TreeView.showAlternatingRowBackgrounds. - + - Type of the property (Read Only). + Bold label with alternative text color when selected and/or focused. - + - Vector value of the property. + Right aligned bold label with alternative text color when selected and/or focused. - + - Flags that control how a MaterialProperty is displayed. + The label that is used for foldout label with alternative text color when selected and/or focused. - + - Signifies that values of this property contain High Dynamic Range (HDR) data. + Left aligned label with alternative text color when selected and/or focused. - + - Do not show the property in the inspector. + Right aligend label with alternative text color when selected and/or focused. - + - No flags are set. + 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. + + + + + 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. + + + + + 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. + + + + 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. + + + + + 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. + + + + + Supported iOS SDK versions. + + + + + Device SDK. + + + + + Simulator SDK. + + + + + Activity Indicator on loading. + + + + + Don't Show. + + + + + Gray. + + + + + White. + + + + + White Large. + + + + + iOS status bar style. + + + + + Black opaque. + + + + + Black translucent. + + + + + Default. + + + + + 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. + + + + + The lighting data asset used by the active scene. + + + + + 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. + + + + + Enable baked ambient occlusion (AO). + + + + + Determines which backend to use for baking lightmaps. + + + + + Determines the filtering kernel for the Progressive Path Tracer backend. + + + + + Determines which sampling strategy to use for baking lightmaps with the path tracing backend. + + + + + The maximum height of an individual lightmap texture. + + + + + The maximum width of an individual lightmap texture. + + + + + Texel separation between shapes. + + + + + 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. + + + + + Whether to use texture compression on the generated lightmaps. + + + + + Backends available for baking lightmaps. + + + + + Backend for baking lightmaps with path tracing. + + + + + Backend for baking lightmaps with the Enlighten radiosity middleware. + + + + + The available filter kernels for the Progressive Path Tracer GI backend. + + + + + Filter baked results of the Progressive Path Tracer with an A-Trous kernel. + + + + + Filter baked results of the Progressive Path Tracer with an Gauss kernel. + + + + + The available filtering modes for the Progressive Path Tracer GI backend. + + + + + Enables the advanced filtering mode for the Progressive Path Tracer GI backend. + + + + + The filtering is configured automatically. + + + + + Turn filtering off. + + + + + Available sampling strategies for baking lightmaps with the path tracing backend. + + + + + 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? + + + + + Stars 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. + + + + + 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. + + + + + 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. + + + + + 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. + + + + + + + + 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. + + + + + + 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. + + + + + 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). + The HDR color configuration used by the HDR Color Picker. + 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. + + + + + + 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 contain High Dynamic Range (HDR) data. + + + + + Do not show the property in the inspector. + + + + + No flags are set. + + - Signifies that values of this property contain Normal (normalized vector) data. + 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. + + + + 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. Currently only il2cpp-based players are able to provide memory snapshots. + + + + + 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 that a player has sent through the profiler connection. + + + + + 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. - + - Do not show UV scale/offset fields next to a texture. + Descriptions of all the C++ unity types the profiled player knows about. - + - 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. + Descriptions of all the managed types that were known to the virtual machine when the snapshot was taken. - + - Material property type. + Information about the virtual machine running executing the managade code inside the player. - + - Color property. + A description of a C++ unity type. - + - Float property. + Name of this C++ unity type. - + - Ranged float (with min/max values) property. + The index used to obtain the native C++ base class description from the PackedMemorySnapshot.nativeTypes array. - + - Texture property. + Description of a C++ unity object in memory. - + - Vector property. + The hideFlags this native object has. - + - Texture dimension of a property. + InstanceId of this object. - + - Texture property accepts any texture type. + Has this object has been marked as DontDestroyOnLoad? - + - Cubemap property. + Is this native object an internal Unity manager object? - + - No texture type is set. + Is this object persistent? (Assets are persistent, objects stored in scenes are persistent, dynamically created objects are not) - + - Texture2D property. + Name of this object. - + - Texture3D property. + The memory address of the native C++ object. This matches the "m_CachedPtr" field of UnityEngine.Object. - + - Base class to derive custom material property drawers from. + The index used to obtain the native C++ type description from the PackedMemorySnapshot.nativeTypes array. - + - Apply extra initial values to the material. + Size in bytes of this object. - The MaterialProperty to apply values for. - + - Override this method to specify how tall the GUI for this property is in pixels. + Description of a managed type. - 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. + 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) - 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. - + - A pair of from and to indices describing what thing keeps what other thing alive. + Name of the assembly this type was loaded from. - + - Index into a virtual list of all GC handles, followed by all native objects. + The base type for this type, pointed to by an index into PackedMemorySnapshot.typeDescriptions. - + - Index into a virtual list of all GC handles, followed by all native objects. + An array containing descriptions of all fields of this type. - + - Description of a field of a managed type. + Is this type an array? - + - Is this field static? + Is this type a value type? (if it's not a value type, it's a reference type) - + - Name of this field. + Name of this type. - + - Offset of this field. + 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 typeindex into PackedMemorySnapshot.typeDescriptions of the type this field belongs to. + The actual contents of the bytes that store this types static fields, at the point of time when the snapshot was taken. - + - A dump of a piece of memory from the player that's being profiled. + The typeIndex of this type. This index is an index into the PackedMemorySnapshot.typeDescriptions array. - + - The actual bytes of the memory dump. + 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 start address of this piece of memory. + 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. + + + + + 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. MenuCommand objects are passed to custom menu item functions defined using the MenuItem attribute. + + + + + 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. - + - MemorySnapshot is a profiling tool to help diagnose memory usage. + Info message. - + - Event that will be fired when a new memory snapshot comes in through the profiler connection. Its argument will be a PackedMemorySnapshot. + Neutral message. - - + - Requests a new snapshot from the currently connected target of the profiler. Currently only il2cpp-based players are able to provide memory snapshots. + Warning message. - + - A description of a GC handle used by the virtual machine. + Compressed texture format for target build platform. - + - The address of the managed object that the GC handle is referencing. + ASTC texture compression. - + - PackedMemorySnapshot is a compact representation of a memory snapshot that a player has sent through the profiler connection. + ATI texture compression. Available on devices running Adreno GPU, including HTC Nexus One, Droid Incredible, EVO, and others. - + - Connections is an array of from,to pairs that describe which things are keeping which other things alive. + S3 texture compression, nonspecific to DXT variant. Supported on devices running Nvidia Tegra2 platform, including Motorala Xoom, Motorola Atrix, Droid Bionic, and others. - + - All GC handles in use in the memorysnapshot. + ETC1 texture compression (or RGBA16 for textures with alpha), supported by all devices. - + - Array of actual managed heap memory sections. + ETC2 texture compression. - + - All native C++ objects that were loaded at time of the snapshot. + Don't override texture compression. - + - Descriptions of all the C++ unity types the profiled player knows about. + PowerVR texture compression. Available in devices running PowerVR SGX530/540 GPU, such as Motorola DROID series; Samsung Galaxy S, Nexus S, and Galaxy Tab; and others. - + - Descriptions of all the managed types that were known to the virtual machine when the snapshot was taken. + Model importer lets you modify import settings from editor scripts. - + - Information about the virtual machine running executing the managade code inside the player. + Add to imported meshes. - + - A description of a C++ unity type. + Animation compression setting. - + - ClassId of the base class of this C++ class. + Allowed error of animation position compression. - + - Name of this C++ unity type. + Allowed error of animation rotation compression. - + - Description of a C++ unity object in memory. + Allowed error of animation scale compression. - + - ClassId of this C++ object. Use this classId to index into PackedMemorySnapshot.nativeTypes. + Animator generation mode. - + - The hideFlags this native object has. + The default wrap mode for the generated animation clips. - + - InstanceId of this object. + Bake Inverse Kinematics (IK) when importing. - + - Has this object has been marked as DontDestroyOnLoad? + Animation clips to split animation into. See Also: ModelImporterClipAnimation. - + - Is this native object an internal Unity manager object? + Generate a list of all default animation clip based on TakeInfo. - + - Is this object persistent? (Assets are persistent, objects stored in scenes are persistent, dynamically created objects are not) + Animation optimization setting. - + - Name of this object. + File scale factor (if available) or default one. (Read-only). - + - Size in bytes of this object. + Animation generation options. - + - Description of a managed type. + Material generation options. - + - 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) + Generate secondary UV set for lightmapping. - + - Name of the assembly this type was loaded from. + Global scale factor for importing. - + - The base type for this type, pointed to by an index into PackedMemorySnapshot.typeDescriptions. + The human description that is used to generate an Avatar during the import process. - + - An array containing descriptions of all fields of this type. + Controls how much oversampling is used when importing humanoid animations for retargeting. - + - Is this type an array? + Import animation from file. - + - Is this type a value type? (if it's not a value type, it's a reference type) + Controls import of BlendShapes. - + - Name of this type. + Generates the list of all imported take. - + - 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. + Import materials from file. - + - The actual contents of the bytes that store this types static fields, at the point of time when the snapshot was taken. + Vertex normal import options. - + - The typeIndex of this type. This index is an index into the PackedMemorySnapshot.typeDescriptions array. + Vertex tangent import options. - + - 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. + Is Bake Inverse Kinematics (IK) supported by this importer. - + - Information about a virtual machine that provided a memory snapshot. + Is FileScale was used when importing. - + - Allocation granularity in bytes used by the virtual machine allocator. + Are mesh vertices and indices accessible from script? - + - Offset in bytes inside the object header of an array object where the bounds of the array is stored. + Is import of tangents supported by this importer. - + - Size in bytes of the header of an array object. + Is useFileUnits supported for this asset. - + - Offset in bytes inside the object header of an array object where the size of the array is stored. + 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. - + - A version number that will change when the object layout inside the managed heap will change. + Material naming setting. - + - Size in bytes of the header of each managed object. + Existing material search setting. - + - Size in bytes of a pointer. + Mesh compression setting. - + - Menu class to manipulate the menu item. + The path of the transform used to generation the motion of the animation. - + - Default constructor. + Normals import mode. - + - Get the check status of the given menu. + Smoothing angle (in degrees) for calculating normals. - - + - Set the check status of the given menu. + Animation optimization setting. - - - + - Used to extract the context for a MenuItem. MenuCommand objects are passed to custom menu item functions defined using the MenuItem attribute. + Vertex optimization setting. - + - Context is the object that is the target of a menu command. + Generates the list of all imported Animations. - + - An integer for passing custom information to a menu item. + 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. + - + - Creates a new MenuCommand object. + Threshold for angle distortion (in degrees) when generating secondary UV. - - - + - Creates a new MenuCommand object. + Threshold for area distortion when generating secondary UV. - - + - The MenuItem attribute allows you to add menu items to the main menu and inspector context menus. + Hard angle (in degrees) for generating secondary UV. - + - Creates a menu item and invokes the static function following it, when the menu item is selected. + Margin to be left between charts when packing secondary UV. - - - - + - Creates a menu item and invokes the static function following it, when the menu item is selected. + Imports the HumanDescription from the given Avatar. - - - + - Creates a menu item and invokes the static function following it, when the menu item is selected. + Should tangents be split across UV seams. - - + - Various utilities for mesh manipulation. + Swap primary and secondary UV channels when importing. - + - Returns the mesh compression setting for a Mesh. + Tangents import mode. - The mesh to get information on. - + - Optimizes the mesh for GPU access. + Generates the list of all imported Transforms. - - + - Change the mesh compression setting for a mesh. + Detect file units and import as 1FileUnit=1UnityUnit, otherwise it will import as 1cm=1UnityUnit. - 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. + Combine vertices that share the same position in space. - - - + - User message types. + Creates a mask that matches the model hierarchy, and applies it to the provided ModelImporterClipAnimation. + Clip to which the mask will be applied. - + - Error message. + Animation compression options for ModelImporter. - + - Info message. + Perform keyframe reduction. - + - Neutral message. + Perform keyframe reduction and compression. - + - Warning message. + No animation compression. - + - Compressed texture format for target build platform. + Perform keyframe reduction and choose the best animation curve representation at runtime to reduce memory footprint (default). - + - ASTC texture compression. + Animation mode for ModelImporter. - + - ATI texture compression. Available on devices running Adreno GPU, including HTC Nexus One, Droid Incredible, EVO, and others. + Generate a generic animator. - + - S3 texture compression, nonspecific to DXT variant. Supported on devices running Nvidia Tegra2 platform, including Motorala Xoom, Motorola Atrix, Droid Bionic, and others. + Generate a human animator. - + - ETC1 texture compression (or RGBA16 for textures with alpha), supported by all devices. + Generate a legacy animation type. - + - ETC2 texture compression. + Generate no animation data. - + - Don't override texture compression. + Animation clips to split animation into. - + - PowerVR texture compression. Available in devices running PowerVR SGX530/540 GPU, such as Motorola DROID series; Samsung Galaxy S, Nexus S, and Galaxy Tab; and others. + The additive reference pose frame. - + - Model importer lets you modify import settings from editor scripts. + Additionnal curves that will be that will be added during the import process. - + - Add to imported meshes. + Offset to the cycle of a looping animation, if a different time in it is desired to be the start. - + - Animation compression setting. + AnimationEvents that will be added during the import process. - + - Allowed error of animation position compression. + First frame of the clip. - + - Allowed error of animation rotation compression. + Enable to defines an additive reference pose. - + - Allowed error of animation scale compression. + Keeps the feet aligned with the root transform position. - + - Animator generation mode. + Offset to the vertical root position. - + - The default wrap mode for the generated animation clips. + Keeps the vertical position as it is authored in the source file. - + - Bake Inverse Kinematics (IK) when importing. + Keeps the vertical position as it is authored in the source file. - + - Animation clips to split animation into. + Keeps the vertical position as it is authored in the source file. - + - Generate a list of all default animation clip based on TakeInfo. + Last frame of the clip. - + - Animation optimization setting. + 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. - + - File scale factor (if available) or default one. (Read-only). + 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. - + - Animation generation options. + Enable to make root rotation be baked into the movement of the bones. Disable to make root rotation be stored as root motion. - + - Material generation options. + Is the clip a looping animation? - + - Generate secondary UV set for lightmapping. + Enable to make the motion loop seamlessly. - + - Global scale factor for importing. + Enable to make the clip loop. - + - The human description that is used to generate an Avatar during the import process. + 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. - + - Controls how much oversampling is used when importing humanoid animations for retargeting. + The AvatarMask used to mask transforms during the import process. - + - Import animation from file. + Define mask type. - + - Controls import of BlendShapes. + Mirror left and right in this clip. - + - Generates the list of all imported take. + Clip name. - + - Import materials from file. + Offset in degrees to the root rotation. - + - Use normals vectors from file. + Take name. - + - Use tangent vectors from file. + The wrap mode of the animation. - + - Is Bake Inverse Kinematics (IK) supported by this importer. + Copy the mask settings from an AvatarMask to the clip configuration. + AvatarMask from which the mask settings will be imported. - + - Is FileScale was used when importing. + Copy the current masking settings from the clip to an AvatarMask. + AvatarMask to which the masking values will be saved. - + - Are mesh vertices and indices accessible from script? + Animation generation options for ModelImporter. These options relate to the legacy Animation system, they should only be used when ModelImporter.animationType==ModelImporterAnimationType.Legacy. - + - Is import of tangents supported by this importer. + Default animation import mode (All animations are stored in the root object). - + - Is useFileUnits supported for this asset. + Generate animations in the objects that animate. - + - Material naming setting. + Generate animations in the root objects of the animation package. - + - Existing material search setting. + Generate animations in the transform root objects. - + - Mesh compression setting. + Do not generate animations. - + - The path of the transform used to generation the motion of the animation. + Material generation options for ModelImporter. - + - Normals import mode. + Do not generate materials. - + - Smoothing angle (in degrees) for calculating normals. + Generate a material for each material in the source asset. - + - Animation optimization setting. + Generate a material for each texture used. - + - Vertex optimization setting. + Humanoid Oversampling available multipliers. - + - Generates the list of all imported Animations. + Default Humanoid Oversampling multiplier = 1 which is equivalent to no oversampling. - + - If set to false, the importer will not resample animation 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. - + Humanoid Oversampling samples at 2 times the sampling rate found in the imported file. - + - Threshold for angle distortion (in degrees) when generating secondary UV. + Humanoid Oversampling samples at 4 times the sampling rate found in the imported file. - + - Threshold for area distortion when generating secondary UV. + Humanoid Oversampling samples at 8 times the sampling rate found in the imported file. - + - Hard angle (in degrees) for generating secondary UV. + Material naming options for ModelImporter. - + - Margin to be left between charts when packing secondary UV. + Use a material name of the form <materialName>.mat. - + - Imports the HumanDescription from the given Avatar. + Use material names in the form <modelFileName>-<materialName>.mat. - + - Should tangents be split across UV seams. + Use material names in the form <textureName>.mat. - + - Swap primary and secondary UV channels when importing. + <textureName>.mat or <modelFileName>-<materialName>.mat material name. - + - Tangents import mode. + Material search options for ModelImporter. - + - Generates the list of all imported Transforms. + Search in all project. - + - Detect file units and import as 1FileUnit=1UnityUnit, otherwise it will import as 1cm=1UnityUnit. + Search in local Materials folder. - + - Animation compression options for ModelImporter. + Recursive-up search in Materials folders. - + - Perform keyframe reduction. + Mesh compression options for ModelImporter. - + - Perform keyframe reduction and compression. + High amount of mesh compression. - + - No animation compression. + Low amount of mesh compression. - + - Perform keyframe reduction and choose the best animation curve representation at runtime to reduce memory footprint (default). + Medium amount of mesh compression. - + - Animation mode for ModelImporter. + No mesh compression (default). - + - Generate a generic animator. + Vertex normal generation options for ModelImporter. - + - Generate a human animator. + Calculate vertex normals. - + - Generate a legacy animation type. + Import vertex normals from model file (default). - + - Generate no animation data. + Do not import vertex normals. - + - Animation clips to split animation into. + Vertex tangent generation options for ModelImporter. - + - The additive reference pose frame. + Calculate tangents with legacy algorithm. - + - Additionnal curves that will be that will be added during the import process. + Calculate tangents with legacy algorithm, with splits across UV charts. - + - Offset to the cycle of a looping animation, if a different time in it is desired to be the start. + Calculate tangents using MikkTSpace (default). - + - AnimationEvents that will be added during the import process. + Import vertex tangents from model file. - + - First frame of the clip. + Do not import vertex tangents. - + - Enable to defines an additive reference pose. + Tangent space generation options for ModelImporter. - + - Keeps the feet aligned with the root transform position. + Calculate tangents. - + - Offset to the vertical root position. + Import normals/tangents from file. - + - Keeps the vertical position as it is authored in the source file. + Strip normals/tangents. - + - Keeps the vertical position as it is authored in the source file. + Representation of Script assets. - + - Keeps the vertical position as it is authored in the source file. + Returns the MonoScript object containing specified MonoBehaviour. + The MonoBehaviour whose MonoScript should be returned. - + - Last frame of the clip. + Returns the MonoScript object containing specified ScriptableObject. + The ScriptableObject whose MonoScript should be returned. - + - 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. + Returns the System.Type object of the class implemented by this script. - + - 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. + Custom mouse cursor shapes used with EditorGUIUtility.AddCursorRect. - + - Enable to make root rotation be baked into the movement of the bones. Disable to make root rotation be stored as root motion. + Normal pointer arrow. - + - Is the clip a looping animation? + Arrow with the minus symbol next to it. - + - Enable to make the motion loop seamlessly. + Arrow with the plus symbol next to it. - + - Enable to make the clip loop. + The current user defined cursor. - + - 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. + Cursor with an eye and stylized arrow keys for FPS navigation. - + - The AvatarMask used to mask transforms during the import process. + Arrow with a Link badge (for assigning pointers). - + - Define mask type. + Arrow with the move symbol next to it for the sceneview. - + - Mirror left and right in this clip. + Cursor with an eye for orbit. - + - Clip name. + Cursor with a dragging hand for pan. - + - Offset in degrees to the root rotation. + Horizontal resize arrows. - + - Take name. + Resize up-Left for window edges. - + - The wrap mode of the animation. + Resize up-right for window edges. - + - Animation generation options for ModelImporter. These options relate to the legacy Animation system, they should only be used when ModelImporter.animationType==ModelImporterAnimationType.Legacy. + Vertical resize arrows. - + - Default animation import mode (All animations are stored in the root object). + Arrow with the rotate symbol next to it for the sceneview. - + - Generate animations in the objects that animate. + Arrow with the scale symbol next to it for the sceneview. - + - Generate animations in the root objects of the animation package. + Arrow with small arrows for indicating sliding at number fields. - + - Generate animations in the transform root objects. + Left-Right resize arrows for window splitters. - + - Do not generate animations. + Up-Down resize arrows for window splitters. - + - Material generation options for ModelImporter. + Text cursor. - + - Do not generate materials. + Cursor with a magnifying glass for zoom. - + - Generate a material for each material in the source asset. + AssetImporter for importing MovieTextures. - + - Generate a material for each texture used. + Duration of the Movie to be imported in seconds. - + - Humanoid Oversampling available multipliers. + Is the movie texture storing non-color data? - + - Default Humanoid Oversampling multiplier = 1 which is equivalent to no oversampling. + Quality setting to use when importing the movie. This is a float value from 0 to 1. - + - Humanoid Oversampling samples at 2 times the sampling rate found in the imported file. + Information of the connected player. - + - Humanoid Oversampling samples at 4 times the sampling rate found in the imported file. + The Id of the player connected. - + - Humanoid Oversampling samples at 8 times the sampling rate found in the imported file. + Handles the connection from the Editor to the Player. - + - Material naming options for ModelImporter. + A list of the connected players. - + - Use a material name of the form <materialName>.mat. + Initializes the EditorConnection. - + - Use material names in the form <modelFileName>-<materialName>.mat. + 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. - + - Use material names in the form <textureName>.mat. + 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. - + - <textureName>.mat or <modelFileName>-<materialName>.mat material name. + Registers a callback on a Player when that Player disconnects. + The Action that is called when the Player with the given Player ID disconnects. - + - Material search options for ModelImporter. + 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. + - + - Search in all project. + 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. + - + - Search in local Materials folder. + Deregisters a registered callback. + Message ID associated with the callback that you wish to deregister. + The Action callback you wish to deregister. - + - Recursive-up search in Materials folders. + Helper class for constructing displayable names for objects. - + - Mesh compression options for ModelImporter. + Class name of an object. + - + - High amount of mesh compression. + Drag and drop title for an object. + - + - Low amount of mesh compression. + Inspector title for an object. + - + - Medium amount of mesh compression. + 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. + - + - No mesh compression (default). + Make a displayable name for a variable. + - + - This is legacy! + Sets the name of an Object. + + - + - This is Legacy. + Base Class to derive from when creating Custom Previews. - + - This is legacy! + The object currently being previewed. - + - This is legacy! + This is the first entry point for Preview Drawing. + The available area to draw the preview. - + - This is legacy. + Implement this method to show object information on top of the object preview. - + - This is legacy. + Override this method if you want to change the label of the Preview area. - + - This is legacy. + Can this component be Previewed in its current state? + + True if this component can be Previewed in its current state. + - + - This is legacy. + Called when the Preview gets created with the objects being previewed. + The objects being previewed. - + - This is legacy. + Called to iterate through the targets, this will be used when previewing more than one target. + + True if there is another target available. + - + - This is legacy. + 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. - + - Animation generation options for ModelImporter. + 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. - + - Calculate tangents. + Override this method if you want to show custom controls in the preview header. - + - Import normals/tangents from file. + Called to Reset the target before iterating through them. - + - Strip normals/tangents. + Displays the Physics Debug Visualization options. + +The Physics Debug Visualization is only displayed if this window is visible. + +See Also: PhysicsVisualizationSettings. - + - Representation of Script assets. + This class contains the settings controlling the Physics Debug Visualization. - + - Returns the MonoScript object containing specified MonoBehaviour. + Alpha amount used for transparency blending. - The MonoBehaviour whose MonoScript should be returned. - + - Returns the MonoScript object containing specified ScriptableObject. + Used to disinguish neighboring Colliders. - The ScriptableObject whose MonoScript should be returned. - + - Returns the System.Type object of the class implemented by this script. + Shows extra options used to develop and debug the physics visualization. - + - Custom mouse cursor shapes used with EditorGUIUtility.AddCursorRect. + Dirty marker used for refreshing the GUI. - + - Normal pointer arrow. + Enables the mouse-over highlighting and mouse selection modes. - + - Arrow with the minus symbol next to it. + See PhysicsVisualizationSettings.FilterWorkflow. - + - Arrow with the plus symbol next to it. + Forcing the drawing of Colliders on top of any other geometry, regardless of depth. - + - The current user defined cursor. + Color for kinematic Rigidbodies. - + - Cursor with an eye and stylized arrow keys for FPS navigation. + Color for Rigidbodies, primarily active ones. - + - Arrow with a Link badge (for assigning pointers). + Should the PhysicsDebugWindow display the collision geometry. - + - Arrow with the move symbol next to it for the sceneview. + Color for Rigidbodies that are controlled by the physics simulator, but are not currently being simulated. - + - Cursor with an eye for orbit. + Color for Colliders that do not have a Rigidbody component. - + - Cursor with a dragging hand for pan. + Maximum number of mesh tiles available to draw all Terrain Colliders. - + - Horizontal resize arrows. + Color for Colliders that are Triggers. - + - Resize up-Left for window edges. + Controls whether the SceneView or the GameView camera is used. Not shown in the UI. - + - Resize up-right for window edges. + Colliders within this distance will be displayed. - + - Vertical resize arrows. + Clears the highlighted Collider. - + - Arrow with the rotate symbol next to it for the sceneview. + Deinitializes the physics debug visualization system and tracking of changes Colliders. - + - Arrow with the scale symbol next to it for the sceneview. + 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>). - + - Arrow with small arrows for indicating sliding at number fields. + With HideSelectedItems you can hide selected filter items in order to easily discard uninteresting Collider properties thereby making overview and navigation easier. - + - Left-Right resize arrows for window splitters. + With ShowSelectedItems and the Select None button is it easy to monitor very specific Colliders. - + - Up-Down resize arrows for window splitters. + Should BoxColliders be shown. + - + - Text cursor. + Should CapsuleColliders be shown. + - + - Cursor with a magnifying glass for zoom. + Should the given layer for the given filterWorkflow be considered by the display filter. + + - + - AssetImporter for importing MovieTextures. + Should the mask representing the layers for the given filterWorkflow be considered by the display filter. + - + - Duration of the Movie to be imported in seconds. + Should the kinematic Rigidbodies for the given filterWorkflow be considered by the display filter. + - + - Is the movie texture storing non-color data? + Should MeshColliders be shown. + + - + - Quality setting to use when importing the movie. This is a float value from 0 to 1. + Should any Rigidbodies for the given filterWorkflow be considered by the display filter. + - + - Navigation mesh builder interface. + Should the sleeping Rigidbodies for the given filterWorkflow be considered by the display filter. + - + - Returns true if an asynchronous build is still running. + Should SphereColliders be shown. + - + - Build the Navmesh. + Should the Colliders without a Rigidbody component be considered by the display filter for the given filterWorkflow. + - + - Build the Navmesh Asyncronously. + Should TerrainColliders be shown. + - + - Builds the combined navmesh for the contents of multiple scenes. + Should the triggers for the given filterWorkflow be considered by the display filter. - Array of paths to scenes that are used for building the navmesh. + - + - Cancel Navmesh construction. + Returns true if there currently is any kind of physics object highlighted. - + - Clear all Navmeshes. + 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. - + - Helper class for constructing displayable names for objects. + Is a MeshCollider convex. - + - Class name of an object. + Corresponds to MeshCollider.convex is true. - - + - Drag and drop title for an object. + Corresponds to MeshCollider.convex is false. - - + - Inspector title for an object. + Resets the visualization options to their default state. - - + - Make a displayable name for a variable. + Should BoxColliders be shown. - + + - + - Sets the name of an Object. + Should CapsuleColliders be shown. - - + + - + - Base Class to derive from when creating Custom Previews. + Should the given layer for the given filterWorkflow be considered by the display filter. + + + - + - The object currently being previewed. + Should the mask representing the layers for the given filterWorkflow be considered by the display filter. + + - + - This is the first entry point for Preview Drawing. + Enables or disables all filtering items for the current filterWorkflow. - The available area to draw the preview. + + - + - Implement this method to show object information on top of the object preview. + Should the kinematic Rigidbodies for the given filterWorkflow be considered by the display filter. + + - + - Override this method if you want to change the label of the Preview area. + Should MeshColliders be shown. + + + - + - Can this component be Previewed in its current state? + Should any Rigidbodies for the given filterWorkflow be considered by the display filter. - - True if this component can be Previewed in its current state. - + + - + - Called when the Preview gets created with the objects being previewed. + Should the sleeping Rigidbodies for the given filterWorkflow be considered by the display filter. - The objects being previewed. + + - + - Called to iterate through the targets, this will be used when previewing more than one target. + Should SphereColliders be shown. - - 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. + Should the Colliders without a Rigidbody component be considered by the display filter for the given filterWorkflow. - 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. + Should TerrainColliders be shown. - Rectangle in which to draw the preview. - Background image. + + - + - Override this method if you want to show custom controls in the preview header. + Should the triggers for the given filterWorkflow be considered by the display filter. + + - + - Called to Reset the target before iterating through them. + Updates the mouse-over highlight at the given mouse position in screen space. + @@ -15764,17 +19521,17 @@ To force a reload of the mask, simply set ModelImporterClipAnimation.maskSource - .NET API compatibility level. + Deprecated. Use PlayerSettings.GetApiCompatibilityLevel and PlayerSettings.SetApiCompatibilityLevel instead. - + - Pre bake collision meshes on player build. + The application identifier for the currently selected build target. - + - Application bundle identifier shared between iOS & Android platforms. + Pre bake collision meshes on player build. @@ -15802,6 +19559,11 @@ To force a reload of the mask, simply set ModelImporterClipAnimation.maskSource 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). @@ -15812,6 +19574,11 @@ To force a reload of the mask, simply set ModelImporterClipAnimation.maskSource Define how to handle fullscreen mode in Windows standalones (Direct3D 9 mode). + + + The default cursor for your application. + + Default screen orientation for mobiles. @@ -15872,6 +19639,16 @@ To force a reload of the mask, simply set ModelImporterClipAnimation.maskSource 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. @@ -15899,7 +19676,12 @@ To force a reload of the mask, simply set ModelImporterClipAnimation.maskSource - Define how to handle fullscreen mode in Mac OS X standalones. + Define how to handle fullscreen mode in macOS standalones. + + + + + Stops or allows audio from other applications to play in the background while your Unity application is running. @@ -15907,6 +19689,11 @@ To force a reload of the mask, simply set ModelImporterClipAnimation.maskSource The name of your product. + + + Protect graphics memory. + + Which rendering path is enabled? @@ -15932,11 +19719,26 @@ To force a reload of the mask, simply set ModelImporterClipAnimation.maskSource 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. + + Should status bar be hidden. Shared between iOS & Android platforms. + + + Active stereo rendering path + + Should player render in stereoscopic 3d on supported hardware? @@ -15972,6 +19774,11 @@ To force a reload of the mask, simply set ModelImporterClipAnimation.maskSource Should Direct3D 11 be used when available? + + + Switch display to HDR mode (if available). + + Enable receipt validation for the Mac App Store. @@ -15997,71 +19804,11 @@ To force a reload of the mask, simply set ModelImporterClipAnimation.maskSource On Windows, show the application in the background if Fullscreen Windowed mode is used. - - - Xbox 360 Kinect Head Orientation file deployment. - - - - - Xbox 360 Kinect Head Position file deployment. - - - - - Xbox 360 Kinect resource file deployment. - - Xbox 360 Avatars. - - - Xbox 360 Kinect title flag - if false, the Kinect APIs are inactive. - - - - - Xbox 360 Kinect automatic skeleton tracking. - - - - - Xbox 360 Kinect Enable Speech Engine. - - - - - Xbox 360 auto-generation of _SPAConfig.cs. - - - - - Xbox 360 ImageXex override configuration file path. - - - - - Xbox 360 SPA file path. - - - - - Xbox 360 Kinect Speech DB. - - - - - Xbox 360 splash screen. - - - - - Xbox 360 title id. - - Android specific player settings. @@ -16124,7 +19871,7 @@ To force a reload of the mask, simply set ModelImporterClipAnimation.maskSource - Minimal Android SDK version. + The minimum API level required for your application to run. @@ -16132,30 +19879,57 @@ To force a reload of the mask, simply set ModelImporterClipAnimation.maskSource Preferred application install location. - + + + Application should show ActivityIndicator when loading. + + + + + Android splash screen scale mode. + + + + + Android target device. + + + + + The target API level of your application. + + + + + 24-bit Depth Buffer is used. + + + - Application should show ActivityIndicator when loading. + Use APK Expansion Files. - + - Android splash screen scale mode. + Facebook specific Player settings. - + - Android target device. + Version of Facebook SDK to use for this project. - + - 24-bit Depth Buffer is used. + Gets .NET API compatibility level for specified BuildTargetGroup. + - + - Use APK Expansion Files. + Get the application identifier for the specified platform. + @@ -16247,6 +20021,12 @@ To force a reload of the mask, simply set ModelImporterClipAnimation.maskSource + + + Get stack trace logging options. + + + Is a build platform using automatic graphics API choice? @@ -16272,14 +20052,39 @@ To force a reload of the mask, simply set ModelImporterClipAnimation.maskSource 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. + The build number of the bundle + + + + + Describes the reason for access to the user's camera. @@ -16287,6 +20092,26 @@ To force a reload of the mask, simply set ModelImporterClipAnimation.maskSource Application should exit when suspended to background. + + + Should hard shadows be enforced when running on (mobile) Metal. + + + + + A provisioning profile Universally Unique Identifier (UUID) that Xcode will use to build your iOS app in Manual Signing mode. + + + + + 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. @@ -16337,6 +20162,16 @@ To force a reload of the mask, simply set ModelImporterClipAnimation.maskSource 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. + + Indicates whether application will use On Demand Resources (ODR) API. @@ -16347,301 +20182,196 @@ To force a reload of the mask, simply set ModelImporterClipAnimation.maskSource Is multi-threaded rendering enabled? - + Nintendo 3DS player settings. - + The unique ID of the application, issued by Nintendo. (0x00300 -> 0xf7fff) - + Specify true to enable static memory compression or false to disable it. - + Disable depth/stencil buffers, to free up memory. - + Disable sterescopic (3D) view on the upper screen. - + Enable shared L/R command list, for increased performance with stereoscopic rendering. - + Enable vsync. - + Specify the expanded save data number using 20 bits. - + Application Logo Style. - + Distribution media size. - + Specifies the product code, or the add-on content code. - + Specifies the title region settings. - + Specify the stack size of the main thread, in bytes. - + The 3DS target platform. - + The title of the application. - + Specify true when using expanded save data. - + Nintendo 3DS logo style specification. - + For Chinese region titles. - + For titles for which Nintendo purchased the publishing license from the software manufacturer, etc. - + For all other titles. - + For Nintendo first-party titles. - + Nintendo 3DS distribution media size. - + 128MB - + 1GB - + 256MB - + 2GB - + 512MB - + Nintendo 3DS Title region. - + For all regions. - + For the American region. - + For the Chinese region. - + For the European region. - + For the Japanese region. - + For the Korean region. - + For the Taiwanese region. - + Nintendo 3DS target platform. - + Target the New Nintendo 3DS platform. - + Target the Nintendo 3DS platform. - - - PS3 specific player settings. - - - - - backgroundPath - - - - - bootCheckMaxSaveGameSizeKB - - - - - dlcConfigPath - - - - - npAgeRating - - - - - npCommunicationPassphrase - - - - - npTrophyCommId - - - - - npTrophyCommSig - - - - - npTrophyPackagePath - - - - - Texture to use for PS3 Splash Screen on boot. - - - - - saveGameSlots - - - - - soundPath - - - - - thumbnailPath - - - - - titleConfigPath - - - - - TrialMode. - - - - - Amount of video memory (in MB) to use as audio storage. - - - - - The amount of video memory (in MB) that is set aside for vertex data allocations. Allocations which do not fit into the area are allocated from system memory. - - - - - DisableDolbyEncoding - - - - - EnableMoveSupport - - - - - Toggle for verbose memory statistics. - - - - - UseSPUForUmbra - - PS4 application category. @@ -17107,6 +20837,20 @@ To force a reload of the mask, simply set ModelImporterClipAnimation.maskSource The videos category. + + + Sets .NET API compatibility level for specified BuildTargetGroup. + + + + + + + Set the application identifier for the specified platform. + + + + Enables the specified aspect ratio. @@ -17159,6 +20903,14 @@ To force a reload of the mask, simply set ModelImporterClipAnimation.maskSource + + + Set stack trace logging options. +Note: calling this function will implicitly call Application.SetStackTraceLogType. + + + + Should a build platform use automatic graphics API choice. @@ -17166,11 +20918,181 @@ To force a reload of the mask, simply set ModelImporterClipAnimation.maskSource Platform to set the flag for. Should best available graphics API be used? + + + 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. + + Tizen specific player settings. + + + Currently chosen Tizen deployment target. + + + + + Choose a type of Tizen target to deploy to. Options are Device or Emulator. + + + + + Minimum Tizen OS version that this application is compatible with. + IMPORTANT: For example: if you choose Tizen 2.4 your application will only run on devices with Tizen 2.4 or later. + + Description of your project to be displayed in the Tizen Store. @@ -17181,6 +21103,11 @@ To force a reload of the mask, simply set ModelImporterClipAnimation.maskSource URL of your project to be displayed in the Tizen Store. + + + Set or Get the style of application loading indicator. The available styles are TizenShowActivityIndicatorOnLoading. + + Name of the security profile to code sign Tizen applications with. @@ -17406,245 +21333,256 @@ To force a reload of the mask, simply set ModelImporterClipAnimation.maskSource - + + + + + + + + + + + + + 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. - + - tvOS specific player settings. + Google Cardboard-specific Player Settings. - + - Active tvOS SDK version used for build. + Set the requested depth format for the Depth and Stencil Buffers. Options are 16bit Depth, 24bit Depth and 24bit Depth + 8bit Stencil. - + - Deployment minimal version of tvOS. + Google VR-specific Player Settings. - + - Compilation overrides for C# files. + Foreground image for the Daydream Launcher Home Screen. - + - C# files are compiled using Mono compiler. + Background image for the Daydream Launcher Home Screen. - + - 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. + Set the requested depth format for the Depth and Stencil Buffers. Options are 16bit Depth, 24bit Depth and 24bit Depth + 8bit Stencil. - + - 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. + WebGL specific player settings. - + - Various image scales, supported by Windows Store Apps. + CompressionFormat defines the compression type that the WebGL resources are encoded to. - + - Image types, supported by Windows Store Apps. + Enables automatic caching of asset data. - + - Xbox One Specific Player Settings. + Enables generation of debug symbols file in the build output directory. - + - Add a ProductId to the list of products that can load the content package created from your project. This setting is only available for content packages. + Exception support for WebGL builds. - - - Returns false if the product Id was already in the allowed list. - - + - Get the list of projects that can load this content package. This setting is only available for content packages. + Memory size for WebGL builds in MB. - + - Xbox One optional parameter that lets you use a specified Manifest file rather than generated for you. + Enables using MD5 hash of the uncompressed file contents as a filename for each file in the build. - + - Xbox One Content ID to be used in constructing game package. + Path to the WebGL template asset. - + - A friendly description that can be displayed to users. + Windows Store Apps specific player settings. - + - Disabling the kinect frees up additional GPU resources for use. + Specify how to compile C# files when building to Windows Store Apps. - + - Enable sampling profiler in development builds to provide better profile markers for PIX, including Start and Update markers for script behaviors. + Enable/Disable independent input source feature. - + - Turns on notifications that you are gaining/losing GPU resources. + Enable/Disable low latency presentation API. - + - (optional override) Location of Xbox One Game OS image file to link into ERA package being created. + Where Unity gets input from. - + - Returns a bool indicating if the given capability is enabled or not. Please see the XDK whitepaper titled "Xbox One Submission Validator" for valid capability names. + Windows Store Apps declarations. - - + - Get the rating value that is specified in the appxmanifest.xml file for the given ratings board. + Set information for file type associations. + +For more information - https:msdn.microsoft.comlibrarywindowsappshh779671https:msdn.microsoft.comlibrarywindowsappshh779671. - The name of the ratings board that you want the rating value for. - - The current rating level. The meaning of the value depends on the name of the ratings board. The value corresponds to the entries the rating board's drop down menu, top most entry being 0 and each item lower in the list being 1 higher than the previous. - - + - Get the values for the socket description with the given name. + + 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. - The name of the socket description. - The port or port range the socket can use. - The protocol the socket uses. - The allowed usage flags for this socket description. - The name of the device association template. - Mutiplayer requirement setting for the device association template. - The allowed usage flags for the device association template. - + - Indicates if the game is a standalone game or a content package to an existing game. + Get path for image, that will be populated to the Visual Studio solution and the package manifest. + + - + - The update granularity the package will be built with. + Set path for image, that will be populated to the Visual Studio solution and the package manifest. + + + - + - Xbox One optional parameter that causes the makepkg process to encrypt the package for performance testing or with final retail encryption. + Compilation overrides for C# files. - + - Xbox One optional parameter that causes the makepkg process to use your specified layout file rather than generating one for you. Required if working with asset bundles. + C# files are compiled using Mono compiler. - + - Sets the size of the persistent local storage. + 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. - + - Xbox One Product ID to use when building a streaming install package. + 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. - + - Remove a ProductId from the list of products that can load the content package created from your project. This setting is only available for content packages. + Describes File Type Association declaration. - - + - Remove the socket description with the given name. + Localizable string that will be displayed to the user as associated file handler. - - + - Xbox One makepkg option. Specifies the Sandbox ID to be used when building a streaming install package. + Supported file types for this association. - + - The service configuration ID for your title. + Various image scales, supported by Windows Store Apps. - + - Mark a specific capability as enabled or enabled in the appxmanifest.xml file. Please see the XDK whitepaper titled "Xbox One Submission Validator" for valid capability names. + Image types, supported by Windows Store Apps. - The name of the capability to set. - Whether or not to enable the capability. - + - Set the rating value that is specified in the appxmanifest.xml file. + Where Unity takes input from (subscripbes to events). - The name of the ratings board that you are setting the rating value for. - The new rating level. The meaning of the value depends on the name of the ratings board. The value corresponds to the entries the rating board's drop down menu, top most entry being 0 and each item lower in the list being 1 higher than the previous. - + - Set the values for the socket description with the given name. + Subscribe to CoreWindow events. - The name of the socket description. - The port or port range the socket can use. - The protocol the socket uses. - The allowed usage flags for this socket description. - The name of the device association template. - Mutiplayer requirement setting for the device association template. - The allowed usage flags for the device association template. - + - Get the names of the socket descriptions for the project. + Create Independent Input Source and receive input from it. - + - The TitleID uniquely identifying your title to Xbox Live services. + Subscribe to SwapChainPanel events. - + - Update the value at the given index in the list of products that can load this content package. You can use the PlayerSettings.XboxOne.AllowedProductIds property to get the existing productIds and determine their indexes. + Describes supported file type for File Type Association declaration. - - - + - Xbox One makepkg.exe option. Specifies the update key required when building game updates. + The 'Content Type' value for the file type's MIME content type. For example: 'image/jpeg'. Can also be left blank. - + - Xbox One Version Identifier used in the Application Manifest. + File type extension. For ex., .myUnityGame @@ -17657,6 +21595,11 @@ To force a reload of the mask, simply set ModelImporterClipAnimation.maskSource 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. @@ -17697,6 +21640,25 @@ To force a reload of the mask, simply set ModelImporterClipAnimation.maskSource 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. @@ -17711,6 +21673,11 @@ To force a reload of the mask, simply set ModelImporterClipAnimation.maskSource 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. @@ -17762,6 +21729,28 @@ To force a reload of the mask, simply set ModelImporterClipAnimation.maskSource 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. + + + Set platform specific data. @@ -17780,6 +21769,11 @@ To force a reload of the mask, simply set ModelImporterClipAnimation.maskSource Data. + + + Identifies whether or not this plugin should be included in the current build target. + + Class used to display popup windows that inherit from PopupWindowContent. @@ -17828,7 +21822,7 @@ To force a reload of the mask, simply set ModelImporterClipAnimation.maskSource - The type of a prefab object as returned by EditorUtility.GetPrefabType. + The type of a prefab object as returned by PrefabUtility.GetPrefabType. @@ -17920,19 +21914,29 @@ To force a reload of the mask, simply set ModelImporterClipAnimation.maskSource Helper function to find the prefab root of an object (used for picking niceness). - + The object to check. + + The prefab root. + Returns the topmost game object that has the same prefab parent as target. + Scene to instantiate the prefab in. + + The GameObject at the root of the prefab. + Returns root game object 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. + @@ -18007,9 +22011,9 @@ To force a reload of the mask, simply set ModelImporterClipAnimation.maskSource - Force record property modifications by comparing against the parent prefab. + Causes modifications made to the Prefab instance to be recorded. - + Object to process. @@ -18145,6 +22149,16 @@ To force a reload of the mask, simply set ModelImporterClipAnimation.maskSource For general development, creates a build stored on the host PC which the Vita reads from. + + + 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 @@ -18160,6 +22174,172 @@ To force a reload of the mask, simply set ModelImporterClipAnimation.maskSource 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. + + + + + Will return an array of Rendering.AlbedoSwatchInfo. + + + + + Will return PlatformShaderSettings for given platform and shader hardware tier. + + + + + + + Will return TierSettings for given platform and shader hardware tier. + + + + + + + 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. + + + + + + + + Used to set up shader settings, per-platorm 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. + + + + + Shader quality preset. + + + + + High quality shader preset. + + + + + Low quality shader preset. + + + + + Medium quality shader preset. + + + + + 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. + + + + + 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. + + + + + 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. @@ -18200,141 +22380,255 @@ To force a reload of the mask, simply set ModelImporterClipAnimation.maskSource Hide the resolution dialog on first launch. - + - Target PS3 or PS4 build type. + SceneAsset is used to reference scene objects in the Editor. - + - Build a package suited for BluRay Submission. + Constructor. - + - Build a package suited for DLC Submission. + Scene management in the Editor. - + - Build package that it's hosted on the PC. + The number of loaded Scenes. - + - SceneAsset is used to reference scene objects in the Editor. + This event is called after a new Scene has been created. + - + - Constructor. + Controls whether cross-Scene references are allowed in the Editor. - + - Scene management in the editor. + 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. + + + + - The number of loaded scenes. + This event is called before a Scene is saved disk after you have requested the Scene to be saved. + - Close the scene. If removeScene flag is true, the closed scene will also be removed from EditorSceneManager. + 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. - The scene to be closed/removed. - Bool flag to indicate if the scene should be removed after closing. + Text shown in the save dialog. - Returns true if the scene is closed/removed. + 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. + - Mark all the loaded scenes as modified. + Mark all the loaded Scenes as modified. - Mark the scene as modified. + Mark the specified Scene as modified. - The scene to be marked 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. + 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. + 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. - Create a new 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. - Allows you to select whether or not the default set of Game Objects should be added to the new scene. See SceneManagement.NewSceneSetup for more information about the options. - Allows you to select how to open the new scene, and whether to keep existing scenes in the Hierarchy. See SceneManagement.NewSceneMode for more information about the options. + 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. + Open a Scene in the Editor. - Path of the scene. Should be relative to the project folder. Like: "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. + 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. + In this array, at least one Scene should be loaded, and there must be one active Scene. - Ask the user if they want to save the the modified scene(s). + 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. + - Ask the user if he wants to save any of the modfied input scenes. + 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. + Save all open Scenes. - Returns true if all open scenes are successfully saved. + Returns true if all open Scenes are successfully saved. - Save a scene. + Save a Scene. - The scene to be saved. - The file path to save at. If not 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 current scene and without clearing the unsaved changes marker. + 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. + 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. - List of scenes that should be saved. + 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. @@ -18502,6 +22796,21 @@ To force a reload of the mask, simply set ModelImporterClipAnimation.maskSource Default setting. + + + Represents different C# compilers that can be used to compile C# scripts. + + + + + Mono C# Compiler. + + + + + Roslyn C# Compiler. + + Scripting implementation (backend). @@ -18527,6 +22836,11 @@ To force a reload of the mask, simply set ModelImporterClipAnimation.maskSource 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). @@ -18604,6 +22918,13 @@ To force a reload of the mask, simply set ModelImporterClipAnimation.maskSource 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. @@ -18659,11 +22980,21 @@ To force a reload of the mask, simply set ModelImporterClipAnimation.maskSource SerializedObject and SerializedProperty are classes for editing properties on objects in a completely generic way that automatically handles undo and styling UI for prefabs. + + + The context used to store and resolve ExposedReference types. This is set by the SerializedObject constructor. + + 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). @@ -18702,6 +23033,20 @@ To force a reload of the mask, simply set ModelImporterClipAnimation.maskSource + + + 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. @@ -18724,6 +23069,11 @@ To force a reload of the mask, simply set ModelImporterClipAnimation.maskSource + + 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. @@ -18738,6 +23088,11 @@ To force a reload of the mask, simply set ModelImporterClipAnimation.maskSource 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. @@ -18793,6 +23148,11 @@ To force a reload of the mask, simply set ModelImporterClipAnimation.maskSource 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. + + Value of a float property. @@ -19050,6 +23410,11 @@ To force a reload of the mask, simply set ModelImporterClipAnimation.maskSource 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. + + Float property. @@ -19105,6 +23470,131 @@ To force a reload of the mask, simply set ModelImporterClipAnimation.maskSource 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. + + + + Abstract class to derive from for defining custom GUI for shader properties and for extending the material preview. @@ -19208,10 +23698,13 @@ To force a reload of the mask, simply set ModelImporterClipAnimation.maskSource - Gets the ShaderPropertyTexDim of the texture at property index propertyIdx of Shader s. + Gets texture dimension of a shader property. - The shader to check against. + The shader to get the property from. The property index to use. + + Texture dimension. + @@ -19220,41 +23713,6 @@ To force a reload of the mask, simply set ModelImporterClipAnimation.maskSource The shader to check against. The property index to use. - - - Representation of the texture dimensions. - - - - - 2D Texture. - - - - - 3D Texture. - - - - - Any texture dimension (catch all). - - - - - Texure Cube (Cubemap). - - - - - Texture Rect. - - - - - Unknown Texture dimension. - - Type of a given texture property. @@ -19506,6 +23964,21 @@ To force a reload of the mask, simply set ModelImporterClipAnimation.maskSource Gets and sets an array of floats of each LOD's screen height value. + + + 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. @@ -19553,7 +24026,7 @@ To force a reload of the mask, simply set ModelImporterClipAnimation.maskSource - Pivot point of the Sprite relative to its bounding rectangle. + The pivot point of the Sprite, relative to its bounding rectangle. @@ -19901,6 +24374,45 @@ To force a reload of the mask, simply set ModelImporterClipAnimation.maskSource 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. + + + + + Use the last known version control system status of the file. This is faster on average but less accurate than forcing an update, as it will cache the status of the file for a period of time. + +See Also: AssetDatabase.IsOpenForEdit, AssetDatabase.IsMetaFileOpenForEdit. + + + + + 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. @@ -20087,11 +24599,11 @@ Values match the ProceduralMaterial::ProceduralLoadingBehavior enum. - + - Set the import settings for the input ProceduralMaterial for the input platform (width and height, RAW/Compressed format, loading behavior). + Set the import settings for the input ProceduralMaterial for the input platform. - The name of the Procedural Material. + The name of the Procedural Material. The name of the platform (can be empty). The maximum texture width for this Procedural Material. The maximum texture height for this Procedural Material. @@ -20107,6 +24619,41 @@ Values match the ProceduralMaterial::ProceduralLoadingBehavior enum. + + + Describes the rendering features supported by a given renderloop. + + + + + The rendering features supported by the active renderloop. + + + + + Supported reflection probe rendering features. + + + + + Default rendering features (Read Only). + + + + + Reflection probe features. + + + + + No additional reflection probe features. + + + + + Reflection probes support rotation. + + A Takeinfo object contains all the information needed to describe a take. @@ -20152,6 +24699,21 @@ Values match the ProceduralMaterial::ProceduralLoadingBehavior enum. 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. + + Anisotropic filtering level of the texture. @@ -20172,6 +24734,11 @@ Values match the ProceduralMaterial::ProceduralLoadingBehavior enum. Convert heightmap to normal map? + + + Use crunched compression when available. + + Fade out mip levels to gray color? @@ -20204,7 +24771,7 @@ Values match the ProceduralMaterial::ProceduralLoadingBehavior enum. - Is texture data readable from scripts. + 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. @@ -20229,7 +24796,7 @@ Values match the ProceduralMaterial::ProceduralLoadingBehavior enum. - Generate mip maps for the texture? + Generate Mip Maps. @@ -20292,14 +24859,24 @@ Values match the ProceduralMaterial::ProceduralLoadingBehavior enum. 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. + + + - Scale factor for mapping pixels in the graphic to units in world space. + Is texture storing color data? - + - Array representing the sections of the atlas corresponding to individual sprite graphics. + Compression of imported texture. @@ -20307,6 +24884,11 @@ Values match the ProceduralMaterial::ProceduralLoadingBehavior enum. Format of imported texture. + + + Shape of imported texture. + + Which type of texture are we dealing with here. @@ -20341,14 +24923,47 @@ Values match the ProceduralMaterial::ProceduralLoadingBehavior enum. 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. - Data format of the texture. + 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. + @@ -20356,7 +24971,19 @@ Values match the ProceduralMaterial::ProceduralLoadingBehavior enum. The platform whose settings are required (see below). Maximum texture width/height in pixels. - Data format of the texture. + 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. + @@ -20382,7 +25009,7 @@ Values match the ProceduralMaterial::ProceduralLoadingBehavior enum. 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, equivalent to the standard JPEG quality setting. + 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). @@ -20392,15 +25019,66 @@ Values match the ProceduralMaterial::ProceduralLoadingBehavior enum. 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, equivalent to the standard JPEG quality setting. + 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. @@ -20428,17 +25106,17 @@ Values match the ProceduralMaterial::ProceduralLoadingBehavior enum. - Alpha 8 bit texture format. + TextureFormat.Alpha8 texture format. - RGBA 16 bit texture format. + TextureFormat.ARGB4444 texture format. - ARGB 32 bit texture format. + TextureFormat.ARGB32 texture format. @@ -20511,6 +25189,11 @@ Values match the ProceduralMaterial::ProceduralLoadingBehavior enum. ATC (Android) 8 bits/pixel compressed RGBA texture format. + + + Choose texture format automatically based on the texture parameters. + + Choose a 16 bit format automatically. @@ -20521,34 +25204,64 @@ Values match the ProceduralMaterial::ProceduralLoadingBehavior enum. 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. + + - DXT1 compresed texture format. + TextureFormat.DXT1 compressed texture format. - DXT1 compresed texture format with crunch compression for small storage sizes. + DXT1 compressed texture format with Crunch compression for small storage sizes. - DXT5 compresed texture format. + TextureFormat.DXT5 compressed texture format. - DXT5 compresed texture format with crunch compression for small storage sizes. + DXT5 compressed texture format with Crunch compression for small storage sizes. @@ -20593,42 +25306,47 @@ Values match the ProceduralMaterial::ProceduralLoadingBehavior enum. - PowerVR (iPhone) 2 bits/pixel compressed color texture format. + PowerVR/iOS TextureFormat.PVRTC_RGB2 compressed texture format. - PowerVR (iPhone) 4 bits/pixel compressed color texture format. + PowerVR/iOS TextureFormat.PVRTC_RGB4 compressed texture format. - PowerVR (iPhone) 2 bits/pixel compressed with alpha channel texture format. + PowerVR/iOS TextureFormat.PVRTC_RGBA2 compressed texture format. - PowerVR (iPhone) 4 bits/pixel compressed with alpha channel texture format. + PowerVR/iOS TextureFormat.PVRTC_RGBA4 compressed texture format. - RGB 16 bit texture format. + TextureFormat.RGB565 texture format. - RGB 24 bit texture format. + TextureFormat.RGB24 texture format. - RGBA 16 bit (4444) texture format. + TextureFormat.RGBA4444 texture format. - RGBA 32 bit texture format. + TextureFormat.RGBA32 texture format. + + + + + TextureFormat.RGBAHalf floating point texture format. @@ -20716,6 +25434,57 @@ Values match the ProceduralMaterial::ProceduralLoadingBehavior enum. 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). + + + + + 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. + + + + + Compression of imported texture. + + + + + Copy parameters into another TextureImporterPlatformSettings object. + + TextureImporterPlatformSettings object to copy settings to. + RGBM encoding mode for HDR textures in TextureImporter. @@ -20746,9 +25515,29 @@ Values match the ProceduralMaterial::ProceduralLoadingBehavior enum. 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. + + + + + Anisotropic filtering level of the texture. + + + - Allow Alpha splitting on the imported texture when needed (for example ETC1 compression for textures with transparency). + Enable this to avoid colors seeping out to the edge of the lower Mip levels. Used for light cookies. + + + + + Convert heightmap to normal map? @@ -20766,6 +25555,71 @@ Values match the ProceduralMaterial::ProceduralLoadingBehavior enum. 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. + + + + + 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. @@ -20806,6 +25660,32 @@ Values match the ProceduralMaterial::ProceduralLoadingBehavior enum. 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? + + + + + Shape of imported texture. + + + + + Which type of texture are we dealing with here. + + + + + Wrap mode (Repeat or Clamp) of the texture. + + Configure parameters to import a texture for a purpose of type, as described TextureImporterType|here. @@ -20826,29 +25706,29 @@ Values match the ProceduralMaterial::ProceduralLoadingBehavior enum. - + - Select this to set basic parameters depending on the purpose of your texture. + Select the kind of shape of your texture. - + - Select this when you want to have specific parameters on your texture and you want to have total control over your texture. + Texture is 2D. - + - Select this to turn the color channels into a format suitable for real-time normal mapping. + Texture is a Cubemap. - + - This sets up your texture with the basic parameters used for the Cookies of your lights. + Select this to set basic parameters depending on the purpose of your texture. - + - This converts your texture into Cubemap suitable for Skyboxes, Environment Reflections or Image Based Lighting (IBL). + This sets up your texture with the basic parameters used for the Cookies of your lights. @@ -20856,6 +25736,11 @@ Values match the ProceduralMaterial::ProceduralLoadingBehavior enum. 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. @@ -20871,11 +25756,61 @@ Values match the ProceduralMaterial::ProceduralLoadingBehavior enum. 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. + + + Tizen OS compatibility. + + + + + + + + + + Enumerator list of different activity indicators your game can show when loading. + + + + + Sets your game not to show any indicator while loading. + + + + + The loading indicator size is large and rotates counterclockwise. + + + + + The loading indicator size is small and rotates counterclockwise. + + + + + The loading indicator size is large and rotates clockwise. + + + + + The loading indicator size is small and rotates clockwise. + + Which tool is active in the editor. @@ -21210,8 +26145,8 @@ It is required that the GameObject is at the root of its current scene. 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). @@ -21332,16 +26267,22 @@ It is required that the GameObject is at the root of its current scene. - Will generate per-triangle uv (3 uv pairs for each triangle) with default settings. + 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 uv pairs for each triangle) with provided settings. + 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. + @@ -22455,6 +27396,367 @@ It is required that the GameObject is at the root of its current scene. Texture coordinate channel 3. + + + 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. + + + + + 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. + + + + + Whether to import a MovieTexture (legacy) or a VideoClip. + + + + + Clear the platform-specific import settings for the specified platform, causing them to go back to the default settings. + + Platform name. + + + + 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. @@ -22485,6 +27787,46 @@ It is required that the GameObject is at the root of its current scene. 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. + + + + + Disable exception support. + + Wii U Player debugging level. @@ -22573,6 +27915,31 @@ Optimization enabled, profiler code enabled. Specifies Windows SDK which used when building Windows Store Apps. + + + 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. diff --git a/Library/UnityAssemblies/UnityEngine.Networking.dll b/Library/UnityAssemblies/UnityEngine.Networking.dll index b64fd39a217b7346f0c7400c98801f249637e669..4a58233e8a71fabb00f362aa370a07cdd8644dd1 100644 GIT binary patch literal 257024 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

&5fnTW-I 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 diff --git a/Library/UnityAssemblies/UnityEngine.Networking.xml b/Library/UnityAssemblies/UnityEngine.Networking.xml index b674dc7..d09093f 100644 --- a/Library/UnityAssemblies/UnityEngine.Networking.xml +++ b/Library/UnityAssemblies/UnityEngine.Networking.xml @@ -9,9 +9,19 @@ An enumeration of the options that can be set on a network channel.

+ + + The option to allow packet fragmentation for a channel. + + + + + The option to set the maximum packet size allowed for a channel. + + - The option to set the numbet of pending buffers for a channel. + The option to set the number of pending buffers for a channel. @@ -51,7 +61,7 @@ - A client manager which contains non-instance centrict client information and functions. + A client manager which contains static client information and functions. @@ -66,7 +76,7 @@ - This is a dictionary of the prefabs that are registered on the client. + This is a dictionary of the prefabs that are registered on the client with ClientScene.RegisterPrefab(). @@ -76,7 +86,7 @@ - The NetworkConnection object that is currently "ready". This is the connection being used connect to the server where objects are spawned from. + The NetworkConnection object that is currently "ready". This is the connection to the server where objects are spawned from. @@ -91,7 +101,7 @@ - This adds a player object for this client. This causes an AddPlayer message to be sent to the server, and NetworkManager.OnServerAddPlayer will be called. If an extra message was passed to AddPlayer, then OnServerAddPlayer will be called with a NetworkReader that contains the contents of the message. + This adds a player GameObject for this client. This causes an AddPlayer message to be sent to the server, and NetworkManager.OnServerAddPlayer is called. If an extra message was passed to AddPlayer, then OnServerAddPlayer will be called with a NetworkReader that contains the contents of the message. The connection to become ready for this client. The local player ID number. @@ -102,7 +112,7 @@ - This adds a player object for this client. This causes an AddPlayer message to be sent to the server, and NetworkManager.OnServerAddPlayer will be called. If an extra message was passed to AddPlayer, then OnServerAddPlayer will be called with a NetworkReader that contains the contents of the message. + This adds a player GameObject for this client. This causes an AddPlayer message to be sent to the server, and NetworkManager.OnServerAddPlayer is called. If an extra message was passed to AddPlayer, then OnServerAddPlayer will be called with a NetworkReader that contains the contents of the message. The connection to become ready for this client. The local player ID number. @@ -113,7 +123,7 @@ - This adds a player object for this client. This causes an AddPlayer message to be sent to the server, and NetworkManager.OnServerAddPlayer will be called. If an extra message was passed to AddPlayer, then OnServerAddPlayer will be called with a NetworkReader that contains the contents of the message. + This adds a player GameObject for this client. This causes an AddPlayer message to be sent to the server, and NetworkManager.OnServerAddPlayer is called. If an extra message was passed to AddPlayer, then OnServerAddPlayer will be called with a NetworkReader that contains the contents of the message. The connection to become ready for this client. The local player ID number. @@ -129,7 +139,7 @@ - Create and connect a local client instance to the local server. + Create and connect a local client instance to the local server. This makes the client into a "host" - a client and server in the same process. A client object for communicating with the local server. @@ -140,11 +150,11 @@ Destroys all networked objects on the client.
- + This finds the local NetworkIdentity object with the specified network Id. - The id of a networked object. + The id of the networked object. The game object that matches the netId. @@ -194,7 +204,7 @@ - This is an advanced spawning funciotn that registers a custom assetId with the UNET spawning system. + This is an advanced spawning function that registers a custom assetId with the UNET spawning system. Custom assetId string. A method to use as a custom spawnhandler on clients. @@ -202,14 +212,22 @@ - Remove the specified player ID from the game. + Removes the specified player ID from the game. - The local player ID number . - + The local playerControllerId number to be removed. Returns true if the player was successfully destoyed and removed. + + + Send a reconnect message to the new host, used during host migration. + + Any extra data to send. + + Returns true if the send succeeded. + + NetId is a unique number assigned to all objects with NetworkIdentity components in a game. @@ -226,15 +244,15 @@ - Removes a registered spawn prefab. + Removes a registered spawn prefab that was setup with ClientScene.RegisterPrefab. - + The prefab to be removed from registration. - Removes a registered spawn handler function. + Removes a registered spawn handler function that was registered with ClientScene.RegisterHandler(). - + The assetId for the handler to be removed for. @@ -321,6 +339,11 @@ Show log messages with priority Info and higher. This is the default setting. + + + Tells the NetworkManager to not set the filter level on startup. + + Show log messages with priority Warning and higher. @@ -403,6 +426,11 @@ Internal networking system message for communicating an error. + + + Internal networking system message for identifying fragmented packets. + + The highest value of built-in networking system message ids. User messages must be above this value. @@ -631,7 +659,7 @@ - The id of the player associated with thei behaviour. + The id of the player associated with the behaviour. @@ -710,7 +738,7 @@ - Virtual function to override to receive custom serialization data. + Virtual function to override to receive custom serialization data. The corresponding function to send serialization data is OnSerialize(). Reader to read from the stream. True if being sent initial state. @@ -732,7 +760,7 @@ - Virtual function to override to send custom serialization data. + Virtual function to override to send custom serialization data. The corresponding function to send serialization data is OnDeserialize(). Writer to use to write to the stream. If this is being called to send initial state. @@ -748,7 +776,7 @@ - This is invoked on behaviours that have authority, based on context and the LocalPlayerAuthority value on the NetworkIdentity. + This is invoked on behaviours that have authority, based on context and NetworkIdentity.localPlayerAuthority. @@ -763,7 +791,7 @@ - Called when the server starts listening. + This is invoked for NetworkBehaviour objects when they become active on the server. @@ -799,7 +827,7 @@ - High level UNET client. + This is a network client class used by the networking system. It contains a NetworkConnection that is used to connection to a network server. @@ -844,7 +872,7 @@ - The other network participants in the current game. + This is obsolete. This information is now in the NetworkMigrationManager. @@ -1048,7 +1076,7 @@ - High level network connection. + A High level network connection. This is used for connections from client-to-server and for connection from server-to-client. @@ -1063,7 +1091,7 @@ - Unique identifier for this connection. + Unique identifier for this connection that is assigned by the transport layer. @@ -1081,6 +1109,11 @@ Flag that tells if the connection has been marked as "ready" by a client calling ClientScene.Ready(). + + + The last error associated with this connection. + + The last time that a message was received on this connection. @@ -1156,13 +1189,10 @@ This inializes the internal data structures of a NetworkConnection object, including channel buffers. - The host or IP connected to. - The transport hostId for the connection. - The transport connectionId for the connection. The topology to be used. - - - + The host or IP connected to. + The transport hostId for the connection. + The transport connectionId for the connection. @@ -1303,7 +1333,7 @@ Returns a string representation of the NetworkConnection object state. - + This virtual function allows custom network connection classes to process data from the network before it is passed to the application. @@ -1509,7 +1539,7 @@ - A component used to add an object to the UNET networking system. + The NetworkIdentity identifies objects across the network, between server and clients. Its primary data is a NetworkInstanceId which is allocated by the server and then set on clients. This is used in network communications to be able to lookup game objects on different machines. @@ -1529,7 +1559,7 @@ - The UConnection associated with this NetworkIdentity. This is only valid for player objects on the server. + The connection associated with this NetworkIdentity. This is only valid for player objects on the server. @@ -1559,7 +1589,7 @@ - LocalPlayerAuthority means that the client of the "owning" player has authority over their own player object. + .localPlayerAuthority means that the client of the "owning" player has authority over their own player object. @@ -1574,7 +1604,7 @@ - The id of the player associated with this object. + The id of the player associated with this GameObject. @@ -1874,6 +1904,12 @@ This is a hook that is invoked on all player objects when exiting the lobby. + + + This is a hook that is invoked on clients when a LobbyPlayer switches between ready or not ready. + + Whether the player is ready or not. + This removes this player from the lobby. @@ -1971,7 +2007,7 @@ - The UMatch matchmaker object. + The UMatch MatchMaker object. @@ -2156,23 +2192,43 @@ The network connection that the scene change message arrived on. - + - This is invoked when a match has been created. + Callback that happens when a NetworkMatch.DestroyMatch request has been processed on the server. - Info about the match that has been created. + Indicates if the request succeeded. + A text description for the error if success is false. - + - This is invoked when a match is joined. + Callback that happens when a NetworkMatch.DropConnection match request has been processed on the server. - + Indicates if the request succeeded. + A text description for the error if success is false. - + - This is invoked when a list of matches is returned from ListMatches(). + Callback that happens when a NetworkMatch.CreateMatch request has been processed on the server. - A list of available matches. + Indicates if the request succeeded. + A text description for the error if success is false. + The information about the newly created match. + + + + Callback that happens when a NetworkMatch.JoinMatch request has been processed on the server. + + Indicates if the request succeeded. + A text description for the error if success is false. + The info for the newly joined match. + + + + Callback that happens when a NetworkMatch.ListMatches request has been processed on the server. + + Indicates if the request succeeded. + A text description for the error if success is false. + A list of matches corresponding to the filters set in the initial list request. @@ -2220,6 +2276,13 @@ The name of the new scene. + + + Callback that happens when a NetworkMatch.SetMatchAttributes has been processed on the server. + + Indicates if the request succeeded. + A text description for the error if success is false. + This is a hook that is invoked when the client is started. @@ -2265,11 +2328,11 @@ - This set the address of the matchmaker service. + This sets the address of the MatchMaker service. - Hostname of matchmaker service. - Port of matchmaker service. - Protocol used by matchmaker service. + Hostname of MatchMaker service. + Port of MatchMaker service. + Protocol used by MatchMaker service. @@ -2300,7 +2363,7 @@ - This starts matchmaker for the NetworkManager. + This starts MatchMaker for the NetworkManager. @@ -2323,7 +2386,7 @@ - Stops the matchmaker that the NetworkManager is using. + Stops the MatchMaker that the NetworkManager is using. @@ -2629,7 +2692,7 @@ All of the player objects in the game are disabled when the host is lost. Then, - The playerControllerId of the player object. + The playerControllerId of the player GameObject. @@ -2738,6 +2801,11 @@ All of the player objects in the game are disabled when the host is lost. Then, A buffer to construct the reader with, this buffer is NOT copied. + + + The current length of the buffer. + + The current position within the buffer. @@ -2800,6 +2868,14 @@ All of the player objects in the game are disabled when the host is lost. Then, The colo read from the stream. + + + Reads a decimal from the stream. + + + Value read. + + Reads a double from the stream. @@ -3057,7 +3133,7 @@ All of the player objects in the game are disabled when the host is lost. Then, - High level network server. + The NetworkServer uses a NetworkServerSimple for basic network functionality and adds more game-like functionality. @@ -3231,9 +3307,9 @@ All of the player objects in the game are disabled when the host is lost. Then, Disconnect all currently connected clients. - + - This finds the NetworkIdentity game object that matches a netId. + This finds the local NetworkIdentity object with the specified network Id. The netId of the NetworkIdentity object to find. @@ -3266,7 +3342,7 @@ All of the player objects in the game are disabled when the host is lost. Then, - Start the server on the given port number. Note that if a match has been created, this will listen using the relay server instead of a local socket. + Start the server on the given port number. Note that if a match has been created, this will listen using the Relay server instead of a local socket. The IP address to bind to (optional). Listen port number. @@ -3276,7 +3352,7 @@ All of the player objects in the game are disabled when the host is lost. Then, - Start the server on the given port number. Note that if a match has been created, this will listen using the relay server instead of a local socket. + Start the server on the given port number. Note that if a match has been created, this will listen using the Relay server instead of a local socket. The IP address to bind to (optional). Listen port number. @@ -3286,7 +3362,7 @@ All of the player objects in the game are disabled when the host is lost. Then, - Starts a server using a relay server. This is the manual way of using the relay server, as the regular NetworkServer.Connect() will automatically use the relay server if a match exists. + Starts a server using a Relay server. This is the manual way of using the Relay server, as the regular NetworkServer.Connect() will automatically use the Relay server if a match exists. Relay server IP Address. Relay server port. @@ -3366,7 +3442,7 @@ All of the player objects in the game are disabled when the host is lost. Then, This sends an array of bytes to a specific player. - The player to send he bytes to. + The player to send the bytes to. Array of bytes to send. Size of array. Transport layer channel id to send bytes on. @@ -3381,7 +3457,7 @@ All of the player objects in the game are disabled when the host is lost. Then, - This sends information about all participants in the current network game to the connection. + This is obsolete. This functionality is now part of the NetworkMigrationManager. Connection to send peer info to. @@ -3667,7 +3743,7 @@ All of the player objects in the game are disabled when the host is lost. Then, - Starts a server using a relay server. This is the manual way of using the relay server, as the regular NetworkServer.Connect() will automatically use the relay server if a match exists. + Starts a server using a Relay server. This is the manual way of using the Relay server, as the regular NetworkServer.Connect() will automatically use the Relay server if a match exists. Relay server IP Address. Relay server port. @@ -3921,7 +3997,7 @@ All of the player objects in the game are disabled when the host is lost. Then, - The playerControllerId of the player object. + The playerControllerId of the player GameObject. @@ -3981,7 +4057,7 @@ All of the player objects in the game are disabled when the host is lost. Then, - The player ID of the player object which should be removed. + The player ID of the player GameObject which should be removed. @@ -3996,7 +4072,7 @@ All of the player objects in the game are disabled when the host is lost. Then, - A component to synchronize the position of networked objects. + A component to synchronize the position and rotation of networked objects. @@ -4094,6 +4170,11 @@ All of the player objects in the game are disabled when the host is lost. Then, What method to use to sync the object's position. + + + The minimum velocity difference that will be synchronized over the network. + + An axis or set of axis. @@ -4334,11 +4415,335 @@ All of the player objects in the game are disabled when the host is lost. Then, Copy of data used by the writer. + + + This writes a reference to an object, value, buffer or network message, together with a NetworkIdentity component to the stream. + + The object to write. + The byte buffer to write. + The number of bytes in the byte buffer to write. + The byte buffer array element to start writing from. + The network message to write. + + + + This writes a reference to an object, value, buffer or network message, together with a NetworkIdentity component to the stream. + + The object to write. + The byte buffer to write. + The number of bytes in the byte buffer to write. + The byte buffer array element to start writing from. + The network message to write. + + + + This writes a reference to an object, value, buffer or network message, together with a NetworkIdentity component to the stream. + + The object to write. + The byte buffer to write. + The number of bytes in the byte buffer to write. + The byte buffer array element to start writing from. + The network message to write. + + + + This writes a reference to an object, value, buffer or network message, together with a NetworkIdentity component to the stream. + + The object to write. + The byte buffer to write. + The number of bytes in the byte buffer to write. + The byte buffer array element to start writing from. + The network message to write. + + + + This writes a reference to an object, value, buffer or network message, together with a NetworkIdentity component to the stream. + + The object to write. + The byte buffer to write. + The number of bytes in the byte buffer to write. + The byte buffer array element to start writing from. + The network message to write. + + + + This writes a reference to an object, value, buffer or network message, together with a NetworkIdentity component to the stream. + + The object to write. + The byte buffer to write. + The number of bytes in the byte buffer to write. + The byte buffer array element to start writing from. + The network message to write. + + + + This writes a reference to an object, value, buffer or network message, together with a NetworkIdentity component to the stream. + + The object to write. + The byte buffer to write. + The number of bytes in the byte buffer to write. + The byte buffer array element to start writing from. + The network message to write. + + + + This writes a reference to an object, value, buffer or network message, together with a NetworkIdentity component to the stream. + + The object to write. + The byte buffer to write. + The number of bytes in the byte buffer to write. + The byte buffer array element to start writing from. + The network message to write. + + + + This writes a reference to an object, value, buffer or network message, together with a NetworkIdentity component to the stream. + + The object to write. + The byte buffer to write. + The number of bytes in the byte buffer to write. + The byte buffer array element to start writing from. + The network message to write. + + + + This writes a reference to an object, value, buffer or network message, together with a NetworkIdentity component to the stream. + + The object to write. + The byte buffer to write. + The number of bytes in the byte buffer to write. + The byte buffer array element to start writing from. + The network message to write. + + + + This writes a reference to an object, value, buffer or network message, together with a NetworkIdentity component to the stream. + + The object to write. + The byte buffer to write. + The number of bytes in the byte buffer to write. + The byte buffer array element to start writing from. + The network message to write. + + + + This writes a reference to an object, value, buffer or network message, together with a NetworkIdentity component to the stream. + + The object to write. + The byte buffer to write. + The number of bytes in the byte buffer to write. + The byte buffer array element to start writing from. + The network message to write. + + + + This writes a reference to an object, value, buffer or network message, together with a NetworkIdentity component to the stream. + + The object to write. + The byte buffer to write. + The number of bytes in the byte buffer to write. + The byte buffer array element to start writing from. + The network message to write. + + + + This writes a reference to an object, value, buffer or network message, together with a NetworkIdentity component to the stream. + + The object to write. + The byte buffer to write. + The number of bytes in the byte buffer to write. + The byte buffer array element to start writing from. + The network message to write. + + + + This writes a reference to an object, value, buffer or network message, together with a NetworkIdentity component to the stream. + + The object to write. + The byte buffer to write. + The number of bytes in the byte buffer to write. + The byte buffer array element to start writing from. + The network message to write. + + + + This writes a reference to an object, value, buffer or network message, together with a NetworkIdentity component to the stream. + + The object to write. + The byte buffer to write. + The number of bytes in the byte buffer to write. + The byte buffer array element to start writing from. + The network message to write. + + + + This writes a reference to an object, value, buffer or network message, together with a NetworkIdentity component to the stream. + + The object to write. + The byte buffer to write. + The number of bytes in the byte buffer to write. + The byte buffer array element to start writing from. + The network message to write. + + + + This writes a reference to an object, value, buffer or network message, together with a NetworkIdentity component to the stream. + + The object to write. + The byte buffer to write. + The number of bytes in the byte buffer to write. + The byte buffer array element to start writing from. + The network message to write. + + + + This writes a reference to an object, value, buffer or network message, together with a NetworkIdentity component to the stream. + + The object to write. + The byte buffer to write. + The number of bytes in the byte buffer to write. + The byte buffer array element to start writing from. + The network message to write. + + + + This writes a reference to an object, value, buffer or network message, together with a NetworkIdentity component to the stream. + + The object to write. + The byte buffer to write. + The number of bytes in the byte buffer to write. + The byte buffer array element to start writing from. + The network message to write. + + + + This writes a reference to an object, value, buffer or network message, together with a NetworkIdentity component to the stream. + + The object to write. + The byte buffer to write. + The number of bytes in the byte buffer to write. + The byte buffer array element to start writing from. + The network message to write. + - This writes the a reference to a GameObject with a NetworkIdentity component to the stream. The object should have been spawned for clients to know about it. + This writes a reference to an object, value, buffer or network message, together with a NetworkIdentity component to the stream. + + The object to write. + The byte buffer to write. + The number of bytes in the byte buffer to write. + The byte buffer array element to start writing from. + The network message to write. + + + + This writes a reference to an object, value, buffer or network message, together with a NetworkIdentity component to the stream. + + The object to write. + The byte buffer to write. + The number of bytes in the byte buffer to write. + The byte buffer array element to start writing from. + The network message to write. + + + + This writes a reference to an object, value, buffer or network message, together with a NetworkIdentity component to the stream. + + The object to write. + The byte buffer to write. + The number of bytes in the byte buffer to write. + The byte buffer array element to start writing from. + The network message to write. + + + + This writes a reference to an object, value, buffer or network message, together with a NetworkIdentity component to the stream. + + The object to write. + The byte buffer to write. + The number of bytes in the byte buffer to write. + The byte buffer array element to start writing from. + The network message to write. + + + + This writes a reference to an object, value, buffer or network message, together with a NetworkIdentity component to the stream. + + The object to write. + The byte buffer to write. + The number of bytes in the byte buffer to write. + The byte buffer array element to start writing from. + The network message to write. + + + + This writes a reference to an object, value, buffer or network message, together with a NetworkIdentity component to the stream. + + The object to write. + The byte buffer to write. + The number of bytes in the byte buffer to write. + The byte buffer array element to start writing from. + The network message to write. + + + + This writes a reference to an object, value, buffer or network message, together with a NetworkIdentity component to the stream. + + The object to write. + The byte buffer to write. + The number of bytes in the byte buffer to write. + The byte buffer array element to start writing from. + The network message to write. + + + + This writes a reference to an object, value, buffer or network message, together with a NetworkIdentity component to the stream. + + The object to write. + The byte buffer to write. + The number of bytes in the byte buffer to write. + The byte buffer array element to start writing from. + The network message to write. + + + + This writes a reference to an object, value, buffer or network message, together with a NetworkIdentity component to the stream. + + The object to write. + The byte buffer to write. + The number of bytes in the byte buffer to write. + The byte buffer array element to start writing from. + The network message to write. + + + + This writes a reference to an object, value, buffer or network message, together with a NetworkIdentity component to the stream. - The GameObject to write. + The object to write. + The byte buffer to write. + The number of bytes in the byte buffer to write. + The byte buffer array element to start writing from. + The network message to write. + + + + This writes a reference to an object, value, buffer or network message, together with a NetworkIdentity component to the stream. + + The object to write. + The byte buffer to write. + The number of bytes in the byte buffer to write. + The byte buffer array element to start writing from. + The network message to write. + + + + This writes a reference to an object, value, buffer or network message, together with a NetworkIdentity component to the stream. + + The object to write. + The byte buffer to write. + The number of bytes in the byte buffer to write. + The byte buffer array element to start writing from. + The network message to write. @@ -4466,6 +4871,24 @@ All of the player objects in the game are disabled when the host is lost. Then, Same as List:Clear() but the list is cleared on clients. + + + Determines whether the list contains item item. + + Item to search for. + + + + Copies the elements of the SyncList<T> to an Array, starting at a particular Array index. + + Array to copy elements to. + The zero-based index in array at which copying begins. + + + + Returns the number of elements in this SyncList<T>. + + This method is used when deserializing SyncList items from a stream. @@ -4481,6 +4904,11 @@ All of the player objects in the game are disabled when the host is lost. Then, Index of item to dirty. + + + Returns an enumerator that iterates through the SyncList<T>. + + Internal function used for remote list operations. @@ -4489,6 +4917,12 @@ All of the player objects in the game are disabled when the host is lost. Then, The index of the item being operated on. The item being operated on. + + + Determines the index of a specific item in the SyncList<T>. + + The item to return the index for. + Internal function. @@ -4503,6 +4937,11 @@ All of the player objects in the game are disabled when the host is lost. Then, Where to insert the item. Item to insert. + + + Reports whether the SyncList<T> is read-only. + + The types of operations that can occur for SyncLists. @@ -4639,8 +5078,7 @@ All of the player objects in the game are disabled when the host is lost. Then, - [SyncVar] is an attribute that can be put on member variables of UNeBehaviour classes. These variables will have their values sychronized from the server to clients in the game that are in the ready state. - + [SyncVar] is an attribute that can be put on member variables of NetworkBehaviour classes. These variables will have their values sychronized from the server to clients in the game that are in the ready state. @@ -4648,6 +5086,16 @@ All of the player objects in the game are disabled when the host is lost. Then, The hook attribute can be used to specify a function to be called when the sync var changes value on the client. + + + This is an attribute that can be put on methods of NetworkBehaviour classes to allow them to be invoked on clients from a server. Unlike the ClientRpc attribute, these functions are invoked on one individual target client, not all of the ready clients. + + + + + The channel ID which this RPC transmission will use. + + Delegate for a function which will handle destruction of objects created with NetworkServer.Spawn. diff --git a/Library/UnityAssemblies/UnityEngine.UI.dll b/Library/UnityAssemblies/UnityEngine.UI.dll index 3c03a3ff27df6233c6490dbcdd249ae589b9af58..286aaa06e5cf7fd337615d0599cd9dd680d23c69 100644 GIT binary patch literal 248832 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ⅆ*Km>Mnh-(6)&FEPdK(3_OQI{=XoD|_&`3zIXc=q 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

fv4>~4xzAna&W{3Ae?5)T_8pojVs+PSl6kvDC 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≷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%0DUX8UiQk)-Lj4x4lq;NaTsnV) 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 t=hqz9kioWwd#6BI6Ou`!1 + +

+ Interface to the Input system used by the BaseInputModule. With this it is possible to bypass the Input system with your own but still use the same InputModule. For example this can be used to feed fake input into the UI or interface with a different input system. + + + + + Interface to Input.compositionCursorPos. Can be overridden to provide custom input instead of using the Input class. + + + + + Interface to Input.compositionString. Can be overridden to provide custom input instead of using the Input class. + + + + + Interface to Input.imeCompositionMode. Can be overridden to provide custom input instead of using the Input class. + + + + + Interface to Input.mousePosition. Can be overridden to provide custom input instead of using the Input class. + + + + + Interface to Input.mousePresent. Can be overridden to provide custom input instead of using the Input class. + + + + + Interface to Input.mouseScrollDelta. Can be overridden to provide custom input instead of using the Input class. + + + + + Interface to Input.touchCount. Can be overridden to provide custom input instead of using the Input class. + + + + + Interface to Input.touchSupported. Can be overridden to provide custom input instead of using the Input class. + + + + + Interface to Input.GetAxisRaw. Can be overridden to provide custom input instead of using the Input class. + + + + + + Interface to Input.GetButtonDown. Can be overridden to provide custom input instead of using the Input class. + + + + + + Interface to Input.GetMouseButton. Can be overridden to provide custom input instead of using the Input class. + + + + + + Interface to Input.GetMouseButtonDown. Can be overridden to provide custom input instead of using the Input class. + + + + + + Interface to Input.GetMouseButtonUp. Can be overridden to provide custom input instead of using the Input class. + + + + + + Interface to Input.GetTouch. Can be overridden to provide custom input instead of using the Input class. + + + A base module that raises events and sends them to GameObjects. + + + The current BaseInput being used by the input module. + + Called when the module is activated. Override this if you want custom code to execute when you activate your module. @@ -143,6 +229,11 @@ See MonoBehaviour.OnDisable. + + + See MonoBehaviour.OnEnable. + + Process the current tick for the module. @@ -296,7 +387,7 @@ - All the functions registered in this EventTrigger. + All the functions registered in this EventTrigger (deprecated). @@ -311,7 +402,7 @@ - The desired UnityEvent to be Invoked. + The desired TriggerEvent to be Invoked. @@ -321,105 +412,105 @@ - See IBeginDragHandler.OnBeginDrag. + Called before a drag is started. - + Current event data. - See ICancelHandler.OnCancel. + Called by the EventSystem when a Cancel event occurs. - + Current event data. - See IDeselectHandler.OnDeselect. + Called by the EventSystem when a new object is being selected. - + Current event data. - See IDragHandler.OnDrag. + Called by the EventSystem every time the pointer is moved during dragging. - + Current event data. - See IDropHandler.OnDrop. + Called by the EventSystem when an object accepts a drop. - + Current event data. - See See IBeginDragHandler.OnEndDrag. + Called by the EventSystem once dragging ends. - + Current event data. - Called by a BaseInputModule when a drag has been found but before it is valid to begin the drag. + Called by the EventSystem when a drag has been found, but before it is valid to begin the drag. - + Current event data. - See IMoveHandler.OnMove. + Called by the EventSystem when a Move event occurs. - + Current event data. - See IPointerClickHandler.OnPointerClick. + Called by the EventSystem when a Click event occurs. - + Current event data. - See IPointerDownHandler.OnPointerDown. + Called by the EventSystem when a PointerDown event occurs. - + Current event data. - See IPointerEnterHandler.OnPointerEnter. + Called by the EventSystem when the pointer enters the object associated with this EventTrigger. - + Current event data. - See IPointerExitHandler.OnPointerExit. + Called by the EventSystem when the pointer exits the object associated with this EventTrigger. - + Current event data. - See IPointerUpHandler.OnPointerUp. + Called by the EventSystem when a PointerUp event occurs. - + Current event data. - See IScrollHandler.OnScroll. + Called by the EventSystem when a Scroll event occurs. - + Current event data. - See ISelectHandler.OnSelect. + Called by the EventSystem when a Select event occurs. - + Current event data. - See ISubmitHandler.OnSubmit. + Called by the EventSystem when a Submit event occurs. - + Current event data. - See IUpdateSelectedHandler.OnUpdateSelected. + Called by the EventSystem when the object associated with this EventTrigger is updated. - + Current event data. @@ -646,7 +737,7 @@ - Starting the hierarchy (starting at root) for a GameObject that can handle <T> + Traverse the object hierarchy starting at root, and return the GameObject which implements the event handler of type <T>. Root GameObject. @@ -850,7 +941,7 @@ - + Called by the EventSystem when the object associated with this EventTrigger is updated. Current event data. @@ -921,6 +1012,14 @@ Logical and of Camera mask and eventMask. + + + Returns a ray going from camera through the event position and the distance between the near and far clipping planes along that ray. + + The pointer event for which we will cast a ray. + The ray. + The distance between the near and far clipping planes along the ray. + See: BaseRaycaster. @@ -1158,7 +1257,7 @@ - Seach the cache for currently active pointers, return true if found. + Search the cache for currently active pointers, return true if found. Touch ID. Found data. @@ -1226,7 +1325,7 @@ - A hit result from a BaseRaycastModule. + A hit result from a BaseRaycaster. @@ -1375,6 +1474,14 @@ The data pertaining to the current mouse state. + + + This method is called by Unity whenever a touch event is processed. Override this method with a custom implementation to process touch events yourself. + + Event data relating to the touch event, such as position and ID to be passed to the touch event destination object. + This is true for the first frame of a touch event, and false thereafter. This can therefore be used to determine the instant a touch event occurred. + This is true only for the last frame of a touch event. + Calculate and send a move event to the current selected object. @@ -1506,7 +1613,7 @@ - See MonoBehaviour.OnDidApplyAnimationProperties. + See UI.LayoutGroup.OnDidApplyAnimationProperties. @@ -1521,7 +1628,7 @@ - See MonoBehaviour.OnRectTransformDimensionsChange. + This callback is called if an associated RectTransform has its dimensions changed. The call is also made to all child rect transforms, even if the child transform itself doesn't change - as it could have, depending on its anchoring. @@ -1668,7 +1775,7 @@ - UnityEvent to be fired when the buttons is pressed. + UnityEvent that is triggered when the button is pressed. @@ -2641,14 +2748,14 @@ If you have modified the list of options, you should call this method afterwards Callback function when a UI element needs to generate vertices. Mesh to populate with UI data. - + VertexHelper utility. Callback function when a UI element needs to generate vertices. Mesh to populate with UI data. - + VertexHelper utility. @@ -2666,7 +2773,7 @@ If you have modified the list of options, you should call this method afterwards - When a GraphicRaycaster is raycasting into the scene it will first filter the elments using their RectTransform rect and then it will use this function to determine the elements hit mby the raycast. + When a GraphicRaycaster is raycasting into the scene it does two things. First it filters the elements using their RectTransform rect. Then it uses this Raycast function to determine the elements hit by the raycast. Screen point. Camera. @@ -2998,6 +3105,16 @@ If you have modified the list of options, you should call this method afterwards Abstract base class for HorizontalLayoutGroup and VerticalLayoutGroup. + + + Returns true if the Layout Group controls the heights of its children. Returns false if children control their own heights. + + + + + Returns true if the Layout Group controls the widths of its children. Returns false if children control their own widths. + + Whether to force the children to expand to fill additional available vertical space. @@ -3064,6 +3181,11 @@ Used if the native representation has been destroyed. Interface for elements that can be clipped if they are under an [[IClipper]. + + + GameObject of the IClippable. + + RectTransform of the clippable. @@ -3188,9 +3310,19 @@ Used if the native representation has been destroyed. Displays a Sprite for the UI System. + + + The alpha threshold specifies the minimum alpha a pixel must have for the event to considered a "hit" on the Image. + + + + + Cache of the default Canvas Ericsson Texture Compression 1 (ETC1) and alpha Material. + + - The alpha threshold specifying the minimum alpha a pixel must have for the event to be passed through. + The alpha threshold specifies the minimum alpha a pixel must have for the event to considered a "hit" on the Image. @@ -3243,6 +3375,11 @@ Used if the native representation has been destroyed. The image's texture. (ReadOnly). + + + The specified Material used by this Image. The default Material is used instead if one wasn't specified. + + See ILayoutElement.minHeight. @@ -3280,7 +3417,7 @@ Used if the native representation has been destroyed. - How the Image is draw. + How to display the image. @@ -3457,22 +3594,22 @@ Used if the native representation has been destroyed. - Display portion of the Image. + Displays only a portion of the Image. - Displayes the full Image. + Displays the full Image. - Displays the Image as a 9-sliced Image. + Displays the Image as a 9-sliced graphic. - Displays the Image Tiling the central part of the Sprite. + Displays a sliced Sprite with its resizable sections tiled instead of stretched. @@ -3627,7 +3764,7 @@ Used if the native representation has been destroyed. - This is an optional ‘empty’ graphic to show that InputField text field is empty. Note that this ‘empty' graphic still displays even when the InputField is selected (that is; when there is focus on it). + This is an optional ‘empty’ graphic to show that the InputField text field is empty. Note that this ‘empty' graphic still displays even when the InputField is selected (that is; when there is focus on it). A placeholder graphic can be used to show subtle hints or make it more obvious that the control is an InputField. @@ -3649,7 +3786,7 @@ A placeholder graphic can be used to show subtle hints or make it more obvious t - The the end point of the selection. + The end point of the selection. @@ -3768,7 +3905,7 @@ Characters 0-9, . (dot), and - (dash / minus sign) are allowed. The dash is only - The InputField is used for typing in a name and enforces capitalization. + The InputField is used for typing in a name, and enforces capitalization of the first letter of each word. Note that the user can circumvent the first letter capitalization rules by deleting automatically-capitalized letters. @@ -4132,6 +4269,15 @@ Characters 0-9, . (dot), and - (dash / minus sign) are allowed. The dash is only Called by the layout system. + + + Returns the alignment on the specified axis as a fraction where 0 is lefttop, 0.5 is middle, and 1 is rightbottom. + + The axis to get alignment along. 0 is horizontal and 1 is vertical. + + The alignment as a fraction where 0 is lefttop, 0.5 is middle, and 1 is rightbottom. + + Returns the calculated position of the first child layout element along the given axis. @@ -4407,7 +4553,7 @@ Characters 0-9, . (dot), and - (dash / minus sign) are allowed. The dash is only - A Graphic that is capable of being mased out. + A Graphic that is capable of being masked out. @@ -4479,6 +4625,7 @@ Characters 0-9, . (dot), and - (dash / minus sign) are allowed. The dash is only Find the correct RectMask2D for a given IClippable. Clippable to search from. +
@@ -4494,6 +4641,16 @@ Characters 0-9, . (dot), and - (dash / minus sign) are allowed. The dash is only + + + Helper function to determine if the child is a descendant of father or is father. + + The transform to compare against. + The starting transform to search up the hierarchy. + + Is child equal to father or is a descendant. + + Notify all IClippables under the given component that they need to recalculate clipping. @@ -4518,27 +4675,27 @@ Characters 0-9, . (dot), and - (dash / minus sign) are allowed. The dash is only - Navitation mode. + Navigation mode. - Selectable to select on down. + Specify a Selectable UI GameObject to highlight when the down arrow key is pressed. - Selectable to select on left. + Specify a Selectable UI GameObject to highlight when the left arrow key is pressed. - Selectable to select on right. + Specify a Selectable UI GameObject to highlight when the right arrow key is pressed. - Selectable to select on up. + Specify a Selectable UI GameObject to highlight when the Up arrow key is pressed. @@ -4682,7 +4839,7 @@ Characters 0-9, . (dot), and - (dash / minus sign) are allowed. The dash is only - Coroutine function for handling continual press during OnPointerDown. + Coroutine function for handling continual press during Scrollbar.OnPointerDown. @@ -4770,6 +4927,18 @@ Characters 0-9, . (dot), and - (dash / minus sign) are allowed. The dash is only + + + Event triggered when pointer is pressed down on the scrollbar. + + + + + + Event triggered when pointer is released after pressing on the scrollbar. + + + Handling for when the canvas is rebuilt. @@ -4875,7 +5044,7 @@ Characters 0-9, . (dot), and - (dash / minus sign) are allowed. The dash is only - Callback executed when the scroll position of the slider is changed. + Callback executed when the position of the child changes. @@ -5065,11 +5234,28 @@ Characters 0-9, . (dot), and - (dash / minus sign) are allowed. The dash is only Called by the layout system. + + + Set the horizontal or vertical scroll position as a value between 0 and 1, with 0 being at the left or at the bottom. + + The position to set, between 0 and 1. + The axis to set: 0 for horizontal, 1 for vertical. + Sets the velocity to zero on both axes so the content stops moving. + + + Calculate the bounds the ScrollRect should be using. + + + + + Helper function to update the previous data fields on a ScrollRect. Call this before you change data in the ScrollRect. + + Simple selectable object - derived from to create a selectable control. @@ -5189,6 +5375,18 @@ Characters 0-9, . (dot), and - (dash / minus sign) are allowed. The dash is only UI.Selectable.IsInteractable. + + + Whether the current selectable is being pressed. + + + + + + Whether the current selectable is being pressed. + + + Unset selection and transition to appropriate state. @@ -5241,6 +5439,31 @@ Characters 0-9, . (dot), and - (dash / minus sign) are allowed. The dash is only Selects this Selectable. + + + An enumeration of selected states of objects. + + + + + The UI object cannot be selected. + + + + + The UI object is highlighted. + + + + + The UI object can be selected. + + + + + The UI object is pressed. + + Transition mode for a Selectable. diff --git a/Library/UnityAssemblies/UnityEngine.dll b/Library/UnityAssemblies/UnityEngine.dll index 975ef1cab90433451bf90594bdcdb125e096552a..cd500c30b96becc04d42749f5d1c6d716114066c 100644 GIT binary patch literal 1541120 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%0AFtYbbi+HM>2*NxzG&+D7{LqM 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%0AB5)oG?6?A9Se-ifY4TOn`9Q$k|OI> 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

MT~7G6>aKrsRDH-CM2j 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

r0QKIov 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 literal 1110528 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

_m< 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 - 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. + Enum mask of possible shader channel properties that can also be included when the Canvas mesh is created. - + - Global boolean for enabling or disabling the advertisement feature. + No additional shader parameters are needed. - + - Controls if the advertisement system should be initialized immediately on startup. + Include the normals on the mesh vertices. - + - Controls if testing advertisements are used instead of production advertisements. + Include the Tangent on the mesh vertices. - + - Gets the game identifier specified for a runtime platform. + Include UV1 on the mesh vertices. - - - The platform specific game identifier. - - + - Returns if a specific platform is enabled. + Include UV2 on the mesh vertices. - - - Boolean for the platform. - - + - Sets the game identifier for the specified platform. + Include UV3 on the mesh vertices. - - - + - Enable the specific platform. + Singleton class to access the baked NavMesh. - - - + - Parent class for all joints that have anchor points. + Describes how far in the future the agents predict collisions for avoidance. - + - The joint's anchor point on the object that has the joint component. + Set a function to be called before the NavMesh is updated during the frame update execution. - + - Should the connectedAnchor be calculated automatically? + The maximum amount of nodes processed each frame in the asynchronous pathfinding process. - + - The joint's anchor point on the second object (ie, the one which doesn't have the joint component). + Adds a link to the NavMesh. The link is described by the NavMeshLinkData struct. + Describing the properties of the link. + + Representing the added link. + - + - ActivityIndicator Style (Android Specific). + 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. + - + - Do not show ActivityIndicator. + Adds the specified NavMeshData to the game. + Contains the data for the navmesh. + + Representing the added navmesh. + - + - Large Inversed (android.R.attr.progressBarStyleLargeInverse). + 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. + - + - Small Inversed (android.R.attr.progressBarStyleSmallInverse). + Area mask constant that includes all NavMesh areas. - + - Large (android.R.attr.progressBarStyleLarge). + 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. + - + - Small (android.R.attr.progressBarStyleSmall). + 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. + - + - AndroidInput provides support for off-screen touch input, such as a touchpad. + Calculates triangulation of the current navmesh. - + - Property indicating whether the system provides secondary touch input. + Creates and returns a new entry of NavMesh build settings available for runtime NavMesh building. + + The created settings. + - + - Property indicating the height of the secondary touchpad. + 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. + - + - Property indicating the width of the secondary touchpad. + 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. + - + - Number of secondary touches. Guaranteed not to change throughout the frame. (Read Only). + Gets the cost for path finding over geometry of the area type. + Index of the area to get. - + - Returns object representing status of a specific touch on a secondary touchpad (Does not allocate temporary variables). + 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. + - + - AndroidJavaClass is the Unity representation of a generic instance of java.lang.Class. + Gets the cost for traversing over geometry of the layer type on all agents. + - + - Construct an AndroidJavaClass from the class name. + Returns the layer index for a named layer. - 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. + Returns an existing entry of NavMesh build settings. + The ID to look for. + + The settings found. + - + - Calls a Java method on an object (non-static). + Returns an existing entry of NavMesh build settings by its ordered index. - Specifies which method to call. - An array of parameters passed to the method. + The index to retrieve from. + + The found settings. + - + - Call a Java method on an object. + Returns the number of registered NavMesh build settings. - Specifies which method to call. - An array of parameters passed to the method. + + The number of registered entries. + - + - Call a static Java method on a class. + Returns the name associated with the NavMesh build settings matching the provided agent type ID. - Specifies which method to call. - An array of parameters passed to the method. + The ID to look for. + + The name associated with the ID found. + - + - Call a static Java method on a class. + A delegate which can be used to register callback methods to be invoked before the NavMesh system updates. - Specifies which method to call. - An array of parameters passed to the method. - + - Construct an AndroidJavaObject based on the name of the class. + Trace a line between two points on the NavMesh. - Specifies the Java class name (e.g. "<tt>java.lang.String<tt>" or "<tt>javalangString<tt>"). - An array of parameters passed to the constructor. + 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. + - + - IDisposable callback. + 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. + - + - Get the value of a field in an object (non-static). + Removes a link from the NavMesh. - The name of the field (e.g. int counter; would have fieldName = "counter"). + The instance of a link to remove. - + - Retrieve the raw jclass pointer to the Java class. + Removes the specified NavMeshDataInstance from the game, making it unavailable for agents and queries. + The instance of a NavMesh to remove. - + - Retrieve the raw jobject pointer to the Java object. + Removes the build settings matching the agent type ID. + The ID of the entry to remove. - + - Get the value of a static field in an object type. + Finds the closest point on NavMesh within specified range. - The name of the field (e.g. <i>int counter;</i> would have fieldName = "counter"). + 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. + - + - Set the value of a field in an object (non-static). + Samples the position closest to sourcePosition - on any NavMesh built for the agent type specified by the filter. - 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. + 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. + - + - Set the value of a static field in an object type. + Sets the cost for finding path over geometry of the area type on all agents. - 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. + Index of the area to set. + New cost. - + - 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. + Sets the cost for traversing over geometry of the layer type on all agents. + + - + - Java interface implemented by the proxy. + Navigation mesh agent. - + - + The maximum acceleration of an agent as it follows a path, given in units / sec^2. - Java interface to be implemented by the proxy. - + - + The type ID for the agent. - 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. + Maximum turning speed in (deg/s) while following a path. - 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. + Specifies which NavMesh areas are passable. Changing areaMask will make the path stale (see isPathStale). - 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. + Should the agent brake automatically to avoid overshooting the destination point? - + - 'Raw' JNI interface to Android Dalvik (Java) VM from Mono (CS/JS). + Should the agent attempt to acquire a new path if the existing path becomes invalid? - + - Allocates a new Java object without invoking any of the constructors for the object. + Should the agent move across OffMeshLinks automatically? - - + - Attaches the current thread to a Java (Dalvik) VM. + The avoidance priority level. - + - Calls an instance (nonstatic) Java method defined by <tt>methodID<tt>, optionally passing an array of arguments (<tt>args<tt>) to the method. + The relative vertical displacement of the owning GameObject. - - - - + - Calls an instance (nonstatic) Java method defined by <tt>methodID<tt>, optionally passing an array of arguments (<tt>args<tt>) to the method. + The current OffMeshLinkData. - - - - + - Calls an instance (nonstatic) Java method defined by <tt>methodID<tt>, optionally passing an array of arguments (<tt>args<tt>) to the method. + The desired velocity of the agent including any potential contribution from avoidance. (Read Only) - - - - + - Calls an instance (nonstatic) Java method defined by <tt>methodID<tt>, optionally passing an array of arguments (<tt>args<tt>) to the method. + Gets or attempts to set the destination of the agent in world-space units. - - - - + - Calls an instance (nonstatic) Java method defined by <tt>methodID<tt>, optionally passing an array of arguments (<tt>args<tt>) to the method. + Does the agent currently have a path? (Read Only) - - - - + - Calls an instance (nonstatic) Java method defined by <tt>methodID<tt>, optionally passing an array of arguments (<tt>args<tt>) to the method. + The height of the agent for purposes of passing under obstacles, etc. - - - - + - Calls an instance (nonstatic) Java method defined by <tt>methodID<tt>, optionally passing an array of arguments (<tt>args<tt>) to the method. + Is the agent currently bound to the navmesh? (Read Only) - - - - + - Calls an instance (nonstatic) Java method defined by <tt>methodID<tt>, optionally passing an array of arguments (<tt>args<tt>) to the method. + Is the agent currently positioned on an OffMeshLink? (Read Only) - - - - + - Calls an instance (nonstatic) Java method defined by <tt>methodID<tt>, optionally passing an array of arguments (<tt>args<tt>) to the method. + Is the current path stale. (Read Only) - - - - + - 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. + This property holds the stop or resume condition of the NavMesh agent. - - - - + - 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. + Returns the owning object of the NavMesh the agent is currently placed on (Read Only). - - - - + - 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. + The next OffMeshLinkData on the current path. - - - - + - 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. + Gets or sets the simulation position of the navmesh agent. - - - - + - 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. + The level of quality of avoidance. - - - - + - 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. + Property to get and set the current path. - - - - + - 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. + Is a path in the process of being computed but not yet ready? (Read Only) - - - - + - 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. + The status of the current path (complete, partial or invalid). - - - - + - 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. + The avoidance radius for the agent. - - - - + - 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. + The distance between the agent's position and the destination on the current path. (Read Only) - - - - + - 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. + Maximum movement speed when following a path. - - - - + - Calls an instance (nonstatic) Java method defined by <tt>methodID<tt>, optionally passing an array of arguments (<tt>args<tt>) to the method. + Get the current steering target along the path. (Read Only) - - - - + - Calls an instance (nonstatic) Java method defined by <tt>methodID<tt>, optionally passing an array of arguments (<tt>args<tt>) to the method. + Stop within this distance from the target position. - - - - + - Deletes the global reference pointed to by <tt>obj</tt>. + Gets or sets whether the transform position is synchronized with the simulated agent position. The default value is true. - - + - Deletes the local reference pointed to by <tt>obj</tt>. + Should the agent update the transform orientation? - - + - Detaches the current thread from a Java (Dalvik) VM. + Allows you to specify whether the agent should be aligned to the up-axis of the NavMesh or link that it is placed on. - + - Ensures that at least a given number of local references can be created in the current thread. + Access the current velocity of the NavMeshAgent component, or set a velocity to control the agent manually. - - + - Clears any exception that is currently being thrown. + Specifies which NavMesh layers are passable (bitfield). Changing walkableMask will make the path stale (see isPathStale). - + - Prints an exception and a backtrace of the stack to the <tt>logcat</tt> + Enables or disables the current off-mesh link. + Is the link activated? - + - Determines if an exception is being thrown. + 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. + - + - Raises a fatal error and does not expect the VM to recover. This function does not return. + Completes the movement on the current OffMeshLink. - - + - This function loads a locally-defined class. + Locate the closest NavMesh edge. - + Holds the properties of the resulting location. + + True if a nearest edge is found. + - + - Convert a Java array of <tt>boolean</tt> to a managed array of System.Boolean. + Gets the cost for path calculation when crossing area of a particular type. - + Area Index. + + Current cost for specified area index. + - + - Convert a Java array of <tt>byte</tt> to a managed array of System.Byte. + Gets the cost for crossing ground of a particular type. - + Layer index. + + Current cost of specified layer. + - + - Convert a Java array of <tt>char</tt> to a managed array of System.Char. + Apply relative movement to current position. - + The relative movement vector. - + - Convert a Java array of <tt>double</tt> to a managed array of System.Double. + 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. + - + - Convert a Java array of <tt>float</tt> to a managed array of System.Single. + Clears the current path. - - + - Convert a Java array of <tt>int</tt> to a managed array of System.Int32. + Resumes the movement along the current path after a pause. - - + - Convert a Java array of <tt>long</tt> to a managed array of System.Int64. + 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. + - + - Convert a Java array of <tt>java.lang.Object</tt> to a managed array of System.IntPtr, representing Java objects. + Sets the cost for traversing over areas of the area type. - + Area cost. + New cost for the specified area index. - + - Converts a <tt>java.lang.reflect.Field</tt> to a field ID. + 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. + - + - Converts a <tt>java.lang.reflect.Method<tt> or <tt>java.lang.reflect.Constructor<tt> object to a method ID. + Sets the cost for traversing over geometry of the layer type. - + Layer index. + New cost for the specified layer. - + - Convert a Java array of <tt>short</tt> to a managed array of System.Int16. + Assign a new path to this agent. - + New path to follow. + + True if the path is succesfully assigned. + - + - Returns the number of elements in the array. + Stop movement of this agent along its current path. - - + - Returns the value of one element of a primitive array. + Warps agent to the provided position. - - + New position to warp the agent to. + + True if agent is successfully warped, otherwise false. + - + - This function returns the value of an instance (nonstatic) field of an object. + Navigation mesh builder interface. - - - + - Returns the value of one element of a primitive array. + Builds a NavMesh data object from the provided input sources. - - + 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. + - + - This function returns the value of an instance (nonstatic) field of an object. + Cancels an asynchronous update of the specified NavMesh data. See Also: UpdateNavMeshDataAsync. - - + The data associated with asynchronous updating. - + - Returns the value of one element of a primitive array. + Collects renderers or physics colliders, and terrains within a volume. - - + 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. - + - This function returns the value of an instance (nonstatic) field of an object. + Collects renderers or physics colliders, and terrains within a transform hierarchy. - - + 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. - + - Returns the value of one element of a primitive array. + Incrementally updates the NavMeshData based on the sources. - - + 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. + - + - This function returns the value of an instance (nonstatic) field of an object. + Asynchronously and incrementally updates the NavMeshData based on the sources. - - + 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. + - + - Returns the field ID for an instance (nonstatic) field of a class. + The NavMesh build markup allows you to control how certain objects are treated during the NavMesh build process, specifically when collecting sources for building. - - - - + - Returns the value of one element of a primitive array. + The area type to use when override area is enabled. - - - + - This function returns the value of an instance (nonstatic) field of an object. + Use this to specify whether the GameObject and its children should be ignored. - - - + - Returns the value of one element of a primitive array. + 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. - - - + - This function returns the value of an instance (nonstatic) field of an object. + Use this to specify which GameObject (including the GameObject’s children) the markup should be applied to. - - - + - Returns the value of one element of a primitive array. + The NavMeshBuildSettings struct allows you to specify a collection of settings which describe the dimensions and limitations of a particular agent type. - - - + - This function returns the value of an instance (nonstatic) field of an object. + The maximum vertical step size an agent can take. - - - + - Returns the method ID for an instance (nonstatic) method of a class or interface. + The height of the agent for baking in world units. - - - - + - Returns an element of an <tt>Object</tt> array. + The radius of the agent for baking in world units. - - - + - Returns the class of an object. + The maximum slope angle which is walkable (angle in degrees). - - + - This function returns the value of an instance (nonstatic) field of an object. + The agent type ID the NavMesh will be baked for. - - - + - Returns the value of one element of a primitive array. + Enables overriding the default tile size. See Also: tileSize. - - - + - This function returns the value of an instance (nonstatic) field of an object. + Enables overriding the default voxel size. See Also: voxelSize. - - - + - This function returns the value of a static field of an object. + Sets the tile size in voxel units. - - - + - This function returns the value of a static field of an object. + Sets the voxel size in world length units. - - - + - This function returns the value of a static field of an object. + Validates the properties of NavMeshBuildSettings. - - + Describes the volume to build NavMesh for. + + The list of violated constraints. + - + - This function returns the value of a static field of an object. + The input to the NavMesh builder is a list of NavMesh build sources. - - - + - Returns the field ID for a static field of a class. + Describes the area type of the NavMesh surface for this object. - - - - + - This function returns the value of a static field of an object. + Points to the owning component - if available, otherwise null. - - - + - This function returns the value of a static field of an object. + The type of the shape this source describes. See Also: NavMeshBuildSourceShape. - - - + - This function returns the value of a static field of an object. + Describes the dimensions of the shape. - - - + - Returns the method ID for a static method of a class. + Describes the object referenced for Mesh and Terrain types of input sources. - - - - + - This function returns the value of a static field of an object. + Describes the local to world transformation matrix of the build source. That is, position and orientation and scale of the shape. - - - + - This function returns the value of a static field of an object. + Used with NavMeshBuildSource to define the shape for building NavMesh. - - - + - This function returns the value of a static field of an object. + Describes a box primitive for use with NavMeshBuildSource. - - - + - This function returns the value of an instance (nonstatic) field of an object. + Describes a capsule primitive for use with NavMeshBuildSource. - - - + - Returns a managed string object representing the string in modified UTF-8 encoding. + Describes a Mesh source for use with NavMeshBuildSource. - - + - Returns the length in bytes of the modified UTF-8 representation of a string. + Describes a ModifierBox source for use with NavMeshBuildSource. - - + - 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>. + Describes a sphere primitive for use with NavMeshBuildSource. - - + - Returns the version of the native method interface. + Describes a TerrainData source for use with NavMeshBuildSource. - + - Determines whether an object of <tt>clazz1<tt> can be safely cast to <tt>clazz2<tt>. + Used for specifying the type of geometry to collect. Used with NavMeshBuilder.CollectSources. - - - + - Tests whether an object is an instance of a class. + Collect geometry from the 3D physics collision representation. - - - + - Tests whether two references refer to the same Java object. + Collect meshes form the rendered geometry. - - - + - Construct a new primitive array object. + Contains and represents NavMesh data. - - + - Construct a new primitive array object. + Gets or sets the world space position of the NavMesh data. - - + - Construct a new primitive array object. + Gets or sets the orientation of the NavMesh data. - - + - Construct a new primitive array object. + Returns the bounding volume of the input geometry used to build this NavMesh (Read Only). - - + - Construct a new primitive array object. + Constructs a new object for representing a NavMesh for the default agent type. - - + - Creates a new global reference to the object referred to by the <tt>obj</tt> argument. + Constructs a new object representing a NavMesh for the specified agent type. - + The agent type ID to create a NavMesh for. - + - Construct a new primitive array object. + The instance is returned when adding NavMesh data. - - + - Creates a new local reference that refers to the same object as <tt>obj</tt>. + Get or set the owning Object. - - + - Construct a new primitive array object. + True if the NavMesh data is added to the navigation system - otherwise false (Read Only). - - + - 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. + Removes this instance from the NavMesh system. - - - - + - Constructs a new array holding objects in class <tt>clazz<tt>. All elements are initially set to <tt>obj<tt>. + Result information for NavMesh queries. - - - - + - Construct a new primitive array object. + Distance to the point of hit. - - + - Constructs a new <tt>java.lang.String</tt> object from an array of characters in modified UTF-8 encoding. + Flag set when hit. - - + - 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. + Mask specifying NavMesh area at point of hit. - - + - Creates a new local reference frame, in which at least a given number of local references can be created. + Normal at the point of hit. - - + - Sets the value of one element in a primitive array. + Position of hit. - - - - + - This function sets the value of an instance (nonstatic) field of an object. + Used for runtime manipulation of links connecting polygons of the NavMesh. - - - - + - Sets the value of one element in a primitive array. + Specifies which agent type this link is available for. - - - - + - This function sets the value of an instance (nonstatic) field of an object. + Area type of the link. - - - - + - Sets the value of one element in a primitive array. + If true, the link can be traversed in both directions, otherwise only from start to end position. - - - - + - This function sets the value of an instance (nonstatic) field of an object. + If positive, overrides the pathfinder cost to traverse the link. - - - - + - Sets the value of one element in a primitive array. + End position of the link. - - - - + - This function sets the value of an instance (nonstatic) field of an object. + Start position of the link. - - - - + - Sets the value of one element in a primitive array. + If positive, the link will be rectangle aligned along the line from start to end. - - - - + - This function sets the value of an instance (nonstatic) field of an object. + An instance representing a link available for pathfinding. - - - - + - Sets the value of one element in a primitive array. + Get or set the owning Object. - - - - + - This function sets the value of an instance (nonstatic) field of an object. + True if the NavMesh link is added to the navigation system - otherwise false (Read Only). - - - - + - Sets the value of one element in a primitive array. + Removes this instance from the game. - - - - + - This function sets the value of an instance (nonstatic) field of an object. + An obstacle for NavMeshAgents to avoid. - - - - + - Sets an element of an <tt>Object</tt> array. + Should this obstacle be carved when it is constantly moving? - - - - + - This function sets the value of an instance (nonstatic) field of an object. + Should this obstacle make a cut-out in the navmesh. - - - - + - Sets the value of one element in a primitive array. + Threshold distance for updating a moving carved hole (when carving is enabled). - - - - + - This function sets the value of an instance (nonstatic) field of an object. + Time to wait until obstacle is treated as stationary (when carving and carveOnlyStationary are enabled). - - - - + - This function ets the value of a static field of an object. + The center of the obstacle, measured in the object's local space. - - - - + - This function ets the value of a static field of an object. + Height of the obstacle's cylinder shape. - - - - + - This function ets the value of a static field of an object. + Radius of the obstacle's capsule shape. - - - - + - This function ets the value of a static field of an object. + The shape of the obstacle. - - - - + - This function ets the value of a static field of an object. + The size of the obstacle, measured in the object's local space. - - - - + - This function ets the value of a static field of an object. + Velocity at which the obstacle moves around the NavMesh. - - - - + - This function ets the value of a static field of an object. + Shape of the obstacle. - - - - + - This function ets the value of a static field of an object. + Box shaped obstacle. - - - - + - This function ets the value of a static field of an object. + Capsule shaped obstacle. - - - - + - This function ets the value of a static field of an object. + A path as calculated by the navigation system. - - - - + - This function sets the value of an instance (nonstatic) field of an object. + Corner points of the path. (Read Only) - - - - + - Causes a <tt>java.lang.Throwable</tt> object to be thrown. + Status of the path. (Read Only) - - + - Constructs an exception object from the specified class with the <tt>message</tt> specified by message and causes that exception to be thrown. + Erase all corner points from path. - - - + - Convert a managed array of System.Boolean to a Java array of <tt>boolean</tt>. + NavMeshPath constructor. - - + - Convert a managed array of System.Byte to a Java array of <tt>byte</tt>. + Calculate the corners for the path. - + Array to store path corners. + + The number of corners along the path - including start and end points. + - + - Convert a managed array of System.Char to a Java array of <tt>char</tt>. + Status of path. - - + - Convert a managed array of System.Double to a Java array of <tt>double</tt>. + The path terminates at the destination. - - + - Convert a managed array of System.Single to a Java array of <tt>float</tt>. + The path is invalid. - - + - Convert a managed array of System.Int32 to a Java array of <tt>int</tt>. + The path cannot reach the destination. - - + - Convert a managed array of System.Int64 to a Java array of <tt>long</tt>. + Specifies which agent type and areas to consider when searching the NavMesh. - - + - Convert a managed array of System.IntPtr, representing Java objects, to a Java array of <tt>java.lang.Object</tt>. + The agent type ID, specifying which navigation meshes to consider for the query functions. - - + - Converts a field ID derived from cls to a <tt>java.lang.reflect.Field</tt> object. + A bitmask representing the traversable area types. - - - - + - Converts a method ID derived from clazz to a <tt>java.lang.reflect.Method<tt> or <tt>java.lang.reflect.Constructor<tt> object. + 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. + - + - Convert a managed array of System.Int16 to a Java array of <tt>short</tt>. + 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. - + - Helper interface for JNI interaction; signature creation and method lookups. + Contains data describing a triangulation of a navmesh. - + - Set debug to true to log calls through the AndroidJNIHelper. + NavMesh area indices for the navmesh triangulation. - + - Creates a managed array from a Java array. + Triangle indices for the navmesh triangulation. - Java array object to be converted into a managed array. - + - Creates a Java array from a managed array. + NavMeshLayer values for the navmesh triangulation. - Managed array to be converted into a Java array object. - + - Creates a java proxy object which connects to the supplied proxy implementation. + Vertices for the navmesh triangulation. - An implementatinon of a java interface in c#. - + - Creates a UnityJavaRunnable object (implements java.lang.Runnable). + Level of obstacle avoidance. - 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. + Good avoidance. High performance impact. - An array of objects that should be converted to Call parameters. - + - Deletes any local jni references previously allocated by CreateJNIArgArray(). + Enable highest precision. Highest performance impact. - 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. + Enable simple avoidance. Low performance impact. - 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. + Medium avoidance. Medium performance impact. - 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. + Disable avoidance. - 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. + Link allowing movement outside the planar navigation mesh. - 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. + Is link active. - 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. + NavMesh area index for this OffMeshLink component. - 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. + Automatically update endpoints. - 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. + Can link be traversed in both directions. - 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. + Modify pathfinding cost for the link. - 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. + The transform representing link end position. - 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. + NavMeshLayer for this OffMeshLink component. - 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. + Is link occupied. (Read Only) - 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. + The transform representing link start position. - Object for which a signature is to be produced. - + - Creates the JNI signature string for an object parameter list. + Explicitly update the link endpoints. - Array of object for which a signature is to be produced. - + - Creates the JNI signature string for an object parameter list. + State of OffMeshLink. - Array of object for which a signature is to be produced. - + - The animation component is used to play back animations. + Is link active (Read Only). - + - When turned on, Unity might stop animating if it thinks that the results of the animation won't be visible to the user. + Link end world position (Read Only). - + - When turned on, animations will be executed in the physics loop. This is only useful in conjunction with kinematic rigidbodies. + Link type specifier (Read Only). - + - The default animation. + The OffMeshLink if the link type is a manually placed Offmeshlink (Read Only). - + - Controls culling of this Animation component. + Link start world position (Read Only). - + - Are we playing any animations? + Is link valid (Read Only). - + - AABB of this Animation animation component in local space. + Link type specifier. - + - Should the default animation clip (the Animation.clip property) automatically start playing on startup? + Vertical drop. - + - How should time beyond the playback range of the clip be treated? + Horizontal jump. - + - Adds a clip to the animation with name newName. + Manually specified type of link. - - - + - Adds clip to the only play between firstFrame and lastFrame. The new clip will also be added to the animation with name newName. + Unity Analytics provides insight into your game users e.g. DAU, MAU. - 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. + Controls whether the sending of device stats at runtime is enabled. - 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. + Controls whether the Analytics service is enabled at runtime. - - - - + - Blends the animation named animation towards targetWeight over the next time seconds. + Controls whether to limit user tracking at runtime. - - - - + - Blends the animation named animation towards targetWeight over the next time seconds. + 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. - + - Fades the animation with name animation in over a period of time seconds and fades other animations out. + Custom Events (optional). - - - + - + - Fades the animation with name animation in over a period of time seconds and fades other animations out. + Custom Events (optional). - - - + + - + - Fades the animation with name animation in over a period of time seconds and fades other animations out. + Attempts to flush immediately all queued analytics events to the network and filesystem cache if possible (optional). - - - - + - Cross fades an animation after previous animations has finished playing. + User Demographics (optional). - - - - + Birth year of user. Must be 4-digit year format, only. - + - Cross fades an animation after previous animations has finished playing. + User Demographics (optional). - - - - + Gender of user can be "Female", "Male", or "Unknown". - + - Cross fades an animation after previous animations has finished playing. + User Demographics (optional). - - - - + User id. - + - Cross fades an animation after previous animations has finished playing. + 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. - + - Get the number of clips currently assigned to this animation. + 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. - + - Is the animation named name playing? + 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. - + - Plays an animation without any blending. + Analytics API result. - - - + - Plays an animation without any blending. + Analytics API result: Analytics is disabled. - - - + - Plays an animation without any blending. + Analytics API result: Invalid argument value. - - - + - Plays an animation without any blending. + Analytics API result: Analytics not initialized. - - - + - Plays an animation after previous animations has finished playing. + Analytics API result: Success. - - - - + - Plays an animation after previous animations has finished playing. + Analytics API result: Argument size limit. - - - - + - Plays an animation after previous animations has finished playing. + Analytics API result: Too many parameters. - - - - + - Remove clip from the animation list. + Analytics API result: Too many requests. - - + - Remove clip from the animation list. + Analytics API result: This platform doesn't support Analytics. - - + - Rewinds the animation named name. + User Demographics: Gender of a user. - - + - Rewinds all animations. + User Demographics: Female Gender of a user. - + - Samples animations at the current state. + User Demographics: Male Gender of a user. - + - Stops all playing animations that were started with this Animation. + User Demographics: Unknown Gender of a user. - + - Stops an animation named name. + Unity Performace provides insight into your game performace. - - + - Returns the animation state named name. + Controls whether the Performance Reporting service is enabled at runtime. - + - Used by Animation.Play function. + Parent class for all joints that have anchor points. - + - Animations will be added. + The joint's anchor point on the object that has the joint component. - + - Animations will be blended. + Should the connectedAnchor be calculated automatically? - + - Stores keyframe based animations. + The joint's anchor point on the second object (ie, the one which doesn't have the joint component). - + - Animation Events for this animation clip. + ActivityIndicator Style (Android Specific). - + - Frame rate at which keyframes are sampled. (Read Only) + Do not show ActivityIndicator. - + - Returns true if the animation contains curve that drives a humanoid rig. + Large Inversed (android.R.attr.progressBarStyleLargeInverse). - + - Set to true if the AnimationClip will be used with the Legacy Animation component ( instead of the Animator ). + Small Inversed (android.R.attr.progressBarStyleSmallInverse). - + - Animation length in seconds. (Read Only) + Large (android.R.attr.progressBarStyleLarge). - + - AABB of this Animation Clip in local space of Animation component that it is attached too. + Small (android.R.attr.progressBarStyleSmall). - + - Sets the default wrap mode used in the animation state. + AndroidInput provides support for off-screen touch input, such as a touchpad. - + - Adds an animation event to the clip. + Property indicating whether the system provides secondary touch input. - AnimationEvent to add. - + - Clears all curves from the clip. + Property indicating the height of the secondary touchpad. - + - Creates a new animation clip. + Property indicating the width of the secondary touchpad. - + - In order to insure better interpolation of quaternions, call this function after you are finished setting animation curves. + Number of secondary touches. Guaranteed not to change throughout the frame. (Read Only). - + - Samples an animation at a given time for any animated properties. + Returns object representing status of a specific touch on a secondary touchpad (Does not allocate temporary variables). - The animated game object. - The time to sample an animation. + - + - Assigns the curve to animate a specific property. + AndroidJavaClass is the Unity representation of a generic instance of java.lang.Class. - Path to the game object this curve applies to. 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. + Construct an AndroidJavaClass from the class name. + Specifies the Java class name (e.g. <tt>java.lang.String</tt>). - + - The original clip from the controller. + AndroidJavaObject is the Unity representation of a generic instance of java.lang.Object. - + - The override animation clip. + Calls a Java method on an object (non-static). + Specifies which method to call. + An array of parameters passed to the method. - + - This enum controlls culling of Animation component. + Call a Java method on an object. + Specifies which method to call. + An array of parameters passed to the method. - + - Animation culling is disabled - object is animated even when offscreen. + Call a static Java method on a class. + Specifies which method to call. + An array of parameters passed to the method. - + - Animation is disabled when renderers are not visible. + Call a static Java method on a class. + Specifies which method to call. + An array of parameters passed to the method. - + - A collection of curves form an AnimationClip. + 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. - + - All keys defined in the animation curve. + IDisposable callback. - + - The number of keys in the curve. (Read Only) + Get the value of a field in an object (non-static). + The name of the field (e.g. int counter; would have fieldName = "counter"). - + - The behaviour of the animation after the last keyframe. + 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. - + - The behaviour of the animation before the first keyframe. + 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. - + - Add a new key to the curve. + Get the value of a static field in an object type. - 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. - + The name of the field (e.g. <i>int counter;</i> would have fieldName = "counter"). - + - Add a new key to the curve. + Set the value of a field in an object (non-static). - The key to add to the curve. - - The index of the added key, or -1 if the key could not be added. - + 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. - + - Creates an animation curve from arbitrary number of keyframes. + 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. - + - Creates an empty animation curve. + 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. - + - Creates an ease-in and out curve starting at timeStart, valueStart and ending at timeEnd, valueEnd. + Java interface implemented by the proxy. - 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. - + Java interface to be implemented by the proxy. - + - 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 (straight) curve created from the values specified. - + Java interface to be implemented by the proxy. - + - Removes the keyframe at index and inserts key. + 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. - The index of the key to move. - The key (with its new time) to insert. - - The index of the keyframe after moving it. - + 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. - + - Removes a key. + 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. - The index of the key to remove. + 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. - + - Smooth the in and out tangents of the keyframe at index. + AndroidJavaRunnable is the Unity representation of a java.lang.Runnable object. - 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) + '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. - + - AnimationEvent lets you call a script function similar to SendMessage as part of playing back an animation. + Allocates a new Java object without invoking any of the constructors for the object. + - + - The animation state that fired this event (Read Only). + Attaches the current thread to a Java (Dalvik) VM. - + - The animator clip info related to this event (Read Only). + Calls an instance (nonstatic) Java method defined by <tt>methodID<tt>, optionally passing an array of arguments (<tt>args<tt>) to the method. + + + - + - The animator state info related to this event (Read Only). + Calls an instance (nonstatic) Java method defined by <tt>methodID<tt>, optionally passing an array of arguments (<tt>args<tt>) to the method. + + + - + - Float parameter that is stored in the event and will be sent to the function. + Calls an instance (nonstatic) Java method defined by <tt>methodID<tt>, optionally passing an array of arguments (<tt>args<tt>) to the method. + + + - + - The name of the function that will be called. + Calls an instance (nonstatic) Java method defined by <tt>methodID<tt>, optionally passing an array of arguments (<tt>args<tt>) to the method. + + + - + - Int parameter that is stored in the event and will be sent to the function. + Calls an instance (nonstatic) Java method defined by <tt>methodID<tt>, optionally passing an array of arguments (<tt>args<tt>) to the method. + + + - + - Returns true if this Animation event has been fired by an Animator component. + Calls an instance (nonstatic) Java method defined by <tt>methodID<tt>, optionally passing an array of arguments (<tt>args<tt>) to the method. + + + - + - Returns true if this Animation event has been fired by an Animation component. + Calls an instance (nonstatic) Java method defined by <tt>methodID<tt>, optionally passing an array of arguments (<tt>args<tt>) to the method. + + + - + - Function call options. + Calls an instance (nonstatic) Java method defined by <tt>methodID<tt>, optionally passing an array of arguments (<tt>args<tt>) to the method. + + + - + - Object reference parameter that is stored in the event and will be sent to the function. + Calls an instance (nonstatic) Java method defined by <tt>methodID<tt>, optionally passing an array of arguments (<tt>args<tt>) to the method. + + + - + - String parameter that is stored in the event and will be sent to the function. + 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. + + + - + - The time at which the event will be fired off. + 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. + + + - + - Creates a new animation event. + 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. + + + - + - Information about what animation clips is played and its weight. + 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. + + + - + - Animation clip that is played. + 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. + + + - + - The weight of the animation clip. + 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. + + + - + - The AnimationState gives full control over animation blending. + 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. + + + - + - Which blend mode should be used? + 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. + + + - + - The clip that is being played by this animation state. + 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. + + + - + - Enables / disables the animation. + 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. + + + - + - The length of the animation clip in seconds. + 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. + + + - + - The name of the animation. + Calls an instance (nonstatic) Java method defined by <tt>methodID<tt>, optionally passing an array of arguments (<tt>args<tt>) to the method. + + + - + - The normalized playback speed. + Calls an instance (nonstatic) Java method defined by <tt>methodID<tt>, optionally passing an array of arguments (<tt>args<tt>) to the method. + + + - + - The normalized time of the animation. + Deletes the global reference pointed to by <tt>obj</tt>. + - + - The playback speed of the animation. 1 is normal playback speed. + Deletes the local reference pointed to by <tt>obj</tt>. + - + - The current time of the animation. + Detaches the current thread from a Java (Dalvik) VM. - + - The weight of animation. + Ensures that at least a given number of local references can be created in the current thread. + - + - Wrapping mode of the animation. + Clears any exception that is currently being thrown. - + - Adds a transform which should be animated. This allows you to reduce the number of animations you have to create. + Prints an exception and a backtrace of the stack to the <tt>logcat</tt> - 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. + Determines if an exception is being thrown. - The transform to animate. - Whether to also animate all children of the specified transform. - + - Removes a transform which should be animated. + Raises a fatal error and does not expect the VM to recover. This function does not return. - + - + - Interface to control the Mecanim animation system. + This function loads a locally-defined class. + - + - Gets the avatar angular velocity for the last evaluated frame. + Convert a Java array of <tt>boolean</tt> to a managed array of System.Boolean. + - + - When turned on, animations will be executed in the physics loop. This is only useful in conjunction with kinematic rigidbodies. + Convert a Java array of <tt>byte</tt> to a managed array of System.Byte. + - + - Should root motion be applied? + Convert a Java array of <tt>char</tt> to a managed array of System.Char. + - + - Gets/Sets the current Avatar. + Convert a Java array of <tt>double</tt> to a managed array of System.Double. + - + - The position of the body center of mass. + Convert a Java array of <tt>float</tt> to a managed array of System.Single. + - + - The rotation of the body center of mass. + Convert a Java array of <tt>int</tt> to a managed array of System.Int32. + - + - Controls culling of this Animator component. + Convert a Java array of <tt>long</tt> to a managed array of System.Int64. + - + - Gets the avatar delta position for the last evaluated frame. + Convert a Java array of <tt>java.lang.Object</tt> to a managed array of System.IntPtr, representing Java objects. + - + - Gets the avatar delta rotation for the last evaluated frame. + Converts a <tt>java.lang.reflect.Field</tt> to a field ID. + - + - Blends pivot point between body center of mass and feet pivot. At 0%, the blending point is body center of mass. At 100%, the blending point is feet pivot. + Converts a <tt>java.lang.reflect.Method<tt> or <tt>java.lang.reflect.Constructor<tt> object to a method ID. + - + - The current gravity weight based on current animations that are played. + Convert a Java array of <tt>short</tt> to a managed array of System.Int16. + - + - Returns true if the current rig has root motion. + Returns the number of elements in the array. + - + - Returns true if the object has a transform hierarchy. + Returns the value of one element of a primitive array. + + - + - Returns the scale of the current Avatar for a humanoid rig, (1 by default if the rig is generic). + This function returns the value of an instance (nonstatic) field of an object. + + - + - Returns true if the current rig is humanoid, false if it is generic. + Returns the value of one element of a primitive array. + + - + - Returns whether the animator is initialized successfully. + This function returns the value of an instance (nonstatic) field of an object. + + - + - If automatic matching is active. + Returns the value of one element of a primitive array. + + - + - Returns true if the current rig is optimizable with AnimatorUtility.OptimizeTransformHierarchy. + This function returns the value of an instance (nonstatic) field of an object. + + - + - See IAnimatorControllerPlayable.layerCount. + Returns the value of one element of a primitive array. + + - + - Additional layers affects the center of mass. + This function returns the value of an instance (nonstatic) field of an object. + + - + - Get left foot bottom height. + Returns the field ID for an instance (nonstatic) field of a class. + + + - + - When linearVelocityBlending is set to true, the root motion velocity and angular velocity will be blended linearly. + Returns the value of one element of a primitive array. + + - + - See IAnimatorControllerPlayable.parameterCount. + This function returns the value of an instance (nonstatic) field of an object. + + - + - Read only acces to the AnimatorControllerParameters used by the animator. + Returns the value of one element of a primitive array. + + - + - Get the current position of the pivot. + This function returns the value of an instance (nonstatic) field of an object. + + - + - Gets the pivot weight. + Returns the value of one element of a primitive array. + + - + - Sets the playback position in the recording buffer. + This function returns the value of an instance (nonstatic) field of an object. + + - + - Gets the mode of the Animator recorder. + Returns the method ID for an instance (nonstatic) method of a class or interface. + + + - + - Start time of the first frame of the buffer relative to the frame at which StartRecording was called. + Returns an element of an <tt>Object</tt> array. + + - + - End time of the recorded clip relative to when StartRecording was called. + Returns the class of an object. + - + - Get right foot bottom height. + This function returns the value of an instance (nonstatic) field of an object. + + - + - The root position, the position of the game object. + Returns the value of one element of a primitive array. + + - + - The root rotation, the rotation of the game object. + This function returns the value of an instance (nonstatic) field of an object. + + - + - The runtime representation of AnimatorController that controls the Animator. + This function returns the value of a static field of an object. + + - + - The playback speed of the Animator. 1 is normal playback speed. + This function returns the value of a static field of an object. + + - + - Automatic stabilization of feet during transition and blending. + This function returns the value of a static field of an object. + + - + - Returns the position of the target specified by SetTarget(AvatarTarget targetIndex, float targetNormalizedTime)). + This function returns the value of a static field of an object. + + - + - Returns the rotation of the target specified by SetTarget(AvatarTarget targetIndex, float targetNormalizedTime)). + Returns the field ID for a static field of a class. + + + - + - Specifies the update mode of the Animator. + This function returns the value of a static field of an object. + + - + - Gets the avatar velocity for the last evaluated frame. + This function returns the value of a static field of an object. + + - + - Apply the default Root Motion. + This function returns the value of a static field of an object. + + - + - See IAnimatorControllerPlayable.CrossFade. + Returns the method ID for a static method of a class. - - - - - + + + - + - See IAnimatorControllerPlayable.CrossFade. + This function returns the value of a static field of an object. - - - - - + + - + - See IAnimatorControllerPlayable.CrossFadeInFixedTime. + This function returns the value of a static field of an object. - - - - - + + - + - See IAnimatorControllerPlayable.CrossFadeInFixedTime. + This function returns the value of a static field of an object. - - - - - + + - + - See IAnimatorControllerPlayable.GetAnimatorTransitionInfo. + This function returns the value of an instance (nonstatic) field of an object. - + + - + - Return the first StateMachineBehaviour that match type T or derived from T. Return null if none are found. + Returns a managed string object representing the string in modified UTF-8 encoding. + - + - Returns all StateMachineBehaviour that match type T or are derived from T. Returns null if none are found. + Returns the length in bytes of the modified UTF-8 representation of a string. + - + - Returns transform mapped to this human bone id. + 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>. - The human bone that is queried, see enum HumanBodyBones for a list of possible values. + - + - See IAnimatorControllerPlayable.GetBool. + Returns the version of the native method interface. - - - + - See IAnimatorControllerPlayable.GetBool. + Determines whether an object of <tt>clazz1<tt> can be safely cast to <tt>clazz2<tt>. - - + + - + - Gets the list of AnimatorClipInfo currently played by the current state. + Tests whether an object is an instance of a class. - The layer's index. + + - + - See IAnimatorControllerPlayable.GetCurrentAnimatorClipInfo. + Tests whether two references refer to the same Java object. - + + - + - See IAnimatorControllerPlayable.GetCurrentAnimatorStateInfo. + Construct a new primitive array object. - + - + - See IAnimatorControllerPlayable.GetFloat. + Construct a new primitive array object. - - + - + - See IAnimatorControllerPlayable.GetFloat. + Construct a new primitive array object. - - + - + - Gets the position of an IK hint. + Construct a new primitive array object. - 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). + Construct a new primitive array object. - The AvatarIKHint that is queried. - - Return translative weight. - + - + - Gets the position of an IK goal. + Creates a new global reference to the object referred to by the <tt>obj</tt> argument. - 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). + Construct a new primitive array object. - The AvatarIKGoal that is queried. + - + - Gets the rotation of an IK goal. + Creates a new local reference that refers to the same object as <tt>obj</tt>. - The AvatarIKGoal that is is queried. + - + - Gets the rotational weight of an IK goal (0 = rotation before IK, 1 = rotation at the IK goal). + Construct a new primitive array object. - The AvatarIKGoal that is queried. + - + - See IAnimatorControllerPlayable.GetInteger. + 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. - - + + + - + - See IAnimatorControllerPlayable.GetInteger. + Constructs a new array holding objects in class <tt>clazz<tt>. All elements are initially set to <tt>obj<tt>. - - + + + - + - See IAnimatorControllerPlayable.GetLayerIndex. + Construct a new primitive array object. - + - + - See IAnimatorControllerPlayable.GetLayerName. + Constructs a new <tt>java.lang.String</tt> object from an array of characters in modified UTF-8 encoding. - + - + - See IAnimatorControllerPlayable.GetLayerWeight. + 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. - + - + - Gets the list of AnimatorClipInfo currently played by the next state. + Creates a new local reference frame, in which at least a given number of local references can be created. - The layer's index. + - + - See IAnimatorControllerPlayable.GetNextAnimatorClipInfo. + 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. - + - See IAnimatorControllerPlayable.GetNextAnimatorStateInfo. + This function sets the value of an instance (nonstatic) field of an object. - + + + - + - See AnimatorController.GetParameter. + Sets the value of one element in a primitive array. + + - + - Gets the value of a quaternion parameter. + This function sets the value of an instance (nonstatic) field of an object. - The name of the parameter. + + + - + - Gets the value of a quaternion parameter. + Sets the value of one element in a primitive array. - The id of the parameter. The id is generated using Animator::StringToHash. + + + - + - Gets the value of a vector parameter. + This function sets the value of an instance (nonstatic) field of an object. - The name of the parameter. + + + - + - Gets the value of a vector parameter. + Sets the value of one element in a primitive array. - The id of the parameter. The id is generated using Animator::StringToHash. + + + - + - See IAnimatorControllerPlayable.HasState. + This function sets the value of an instance (nonstatic) field of an object. - - + + + - + - Interrupts the automatic target matching. + Sets the value of one element in a primitive array. - + + + - + - Interrupts the automatic target matching. + This function sets the value of an instance (nonstatic) field of an object. - + + + - + - Returns true if the transform is controlled by the Animator\. + Sets the value of one element in a primitive array. - The transform that is queried. + + + - + - See IAnimatorControllerPlayable.IsInTransition. + This function sets the value of an instance (nonstatic) field of an object. - + + + - + - See IAnimatorControllerPlayable.IsParameterControlledByCurve. + Sets the value of one element in a primitive array. - - + + + - + - See IAnimatorControllerPlayable.IsParameterControlledByCurve. + This function sets the value of an instance (nonstatic) field of an object. - - + + + - + - Automatically adjust the gameobject position and rotation so that the AvatarTarget reaches the matchPosition when the current state is at the specified progress. + Sets an element of an <tt>Object</tt> array. - 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. + + + - + - See IAnimatorControllerPlayable.Play. + This function sets the value of an instance (nonstatic) field of an object. - - - - + + + - + - See IAnimatorControllerPlayable.Play. + Sets the value of one element in a primitive array. - - - - + + + - + - See IAnimatorControllerPlayable.PlayInFixedTime. + This function sets the value of an instance (nonstatic) field of an object. - - - - + + + - + - See IAnimatorControllerPlayable.PlayInFixedTime. + This function ets the value of a static field of an object. - - - - + + + - + - Rebind all the animated properties and mesh data with the Animator. + This function ets the value of a static field of an object. + + + - + - See IAnimatorControllerPlayable.ResetTrigger. + This function ets the value of a static field of an object. - - + + + - + - See IAnimatorControllerPlayable.ResetTrigger. + This function ets the value of a static field of an object. - - + + + - + - Sets local rotation of a human bone during a IK pass. + This function ets the value of a static field of an object. - The human bone Id. - The local rotation. + + + - + - See IAnimatorControllerPlayable.SetBool. + This function ets the value of a static field of an object. - - - + + + - + - See IAnimatorControllerPlayable.SetBool. + This function ets the value of a static field of an object. - - - + + + - + - See IAnimatorControllerPlayable.SetFloat. + This function ets the value of a static field of an object. - - - - - + + + - + - See IAnimatorControllerPlayable.SetFloat. + This function ets the value of a static field of an object. - - - - - + + + - + - See IAnimatorControllerPlayable.SetFloat. + This function ets the value of a static field of an object. - - - - - + + + - + - See IAnimatorControllerPlayable.SetFloat. + This function sets the value of an instance (nonstatic) field of an object. - - - - - + + + - + - Sets the position of an IK hint. + Causes a <tt>java.lang.Throwable</tt> object to be thrown. - 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). + Constructs an exception object from the specified class with the <tt>message</tt> specified by message and causes that exception to be thrown. - The AvatarIKHint that is set. - The translative weight. + + - + - Sets the position of an IK goal. + Convert a managed array of System.Boolean to a Java array of <tt>boolean</tt>. - 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). + Convert a managed array of System.Byte to a Java array of <tt>byte</tt>. - The AvatarIKGoal that is set. - The translative weight. + - + - Sets the rotation of an IK goal. + Convert a managed array of System.Char to a Java array of <tt>char</tt>. - 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). + Convert a managed array of System.Double to a Java array of <tt>double</tt>. - The AvatarIKGoal that is set. - The rotational weight. + - + - See IAnimatorControllerPlayable.SetInteger. + Convert a managed array of System.Single to a Java array of <tt>float</tt>. - - - + - + - See IAnimatorControllerPlayable.SetInteger. + Convert a managed array of System.Int32 to a Java array of <tt>int</tt>. - - - + - + - See IAnimatorControllerPlayable.SetLayerWeight. + Convert a managed array of System.Int64 to a Java array of <tt>long</tt>. - - + - + - Sets the look at position. + Convert a managed array of System.IntPtr, representing Java objects, to a Java array of <tt>java.lang.Object</tt>. - The position to lookAt. + - + - Set look at weights. + Converts a field ID derived from cls to a <tt>java.lang.reflect.Field</tt> object. - (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. + Converts a method ID derived from clazz to a <tt>java.lang.reflect.Method<tt> or <tt>java.lang.reflect.Constructor<tt> object. - (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. + Convert a managed array of System.Int16 to a Java array of <tt>short</tt>. - (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. + 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. - (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. + Set debug to true to log calls through the AndroidJNIHelper. - (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. + Creates a managed array from a Java array. - The name of the parameter. - The new value for the parameter. + Java array object to be converted into a managed array. - + - Sets the value of a quaternion parameter. + Creates a Java array from a managed array. - Of the parameter. The id is generated using Animator::StringToHash. - The new value for the parameter. + Managed array to be converted into a Java array object. - + - Sets an AvatarTarget and a targetNormalizedTime for the current state. + Creates a java proxy object which connects to the supplied proxy implementation. - The avatar body part that is queried. - The current state Time that is queried. + An implementatinon of a java interface in c#. - + - See IAnimatorControllerPlayable.SetTrigger. + Creates a UnityJavaRunnable object (implements java.lang.Runnable). - - + A delegate representing the java.lang.Runnable. + - + - See IAnimatorControllerPlayable.SetTrigger. + 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. - + - Sets the value of a vector parameter. + Deletes any local jni references previously allocated by CreateJNIArgArray(). - The name of the parameter. - The new value for the parameter. + The array of arguments used as a parameter to CreateJNIArgArray(). + The array returned by CreateJNIArgArray(). - + - Sets the value of a vector parameter. + Scans a particular Java class for a constructor method matching a signature. - The id of the parameter. The id is generated using Animator::StringToHash. - The new value for the parameter. + Raw JNI Java class object (obtained by calling AndroidJNI.FindClass). + Constructor method signature (e.g. obtained by calling AndroidJNIHelper.GetSignature). - + - Sets the animator in playback mode. + 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). - + - Sets the animator in recording mode, and allocates a circular buffer of size frameCount. + Get a JNI method ID for a constructor based on calling arguments. - 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. + Raw JNI Java class object (obtained by calling AndroidJNI.FindClass). + Array with parameters to be passed to the constructor when invoked. + - + - Stops the animator playback mode. When playback stops, the avatar resumes getting control from game logic. + 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. - + - Stops animator record mode. + 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. - + - Generates an parameter id from a string. + Scans a particular Java class for a field matching a name and a signature. - The string to convert to Id. + 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. - + - Evaluates the animator based on deltaTime. + Get a JNI field ID based on type detection. Generic parameter represents the field type. - The time delta. + 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. + - + - Information about clip been played and blended by the Animator. + 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. - - - Returns the animation clip played by the Animator. - - - + - Returns the blending weight used by the Animator to blend this clip. + 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. - + - 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. + 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. - + - The default bool value for the parameter. + 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. + - + - The default bool value for the parameter. + 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. + - + - The default bool value for the parameter. + Creates the JNI signature string for particular object type. + Object for which a signature is to be produced. - + - The name of the parameter. + Creates the JNI signature string for an object parameter list. + Array of object for which a signature is to be produced. - + - Returns the hash of the parameter based on its name. + Creates the JNI signature string for an object parameter list. + Array of object for which a signature is to be produced. - + - The type of the parameter. + The animation component is used to play back animations. - + - The type of the parameter. + When turned on, Unity might stop animating if it thinks that the results of the animation won't be visible to the user. - + - Boolean type parameter. + When turned on, animations will be executed in the physics loop. This is only useful in conjunction with kinematic rigidbodies. - + - Float type parameter. + The default animation. - + - Int type parameter. + Controls culling of this Animation component. - + - Trigger type parameter. + Are we playing any animations? - + - Culling mode for the Animator. + AABB of this Animation animation component in local space. - + - Always animate the entire character. Object is animated even when offscreen. + Should the default animation clip (the Animation.clip property) automatically start playing on startup? - + - Animation is completely disabled when renderers are not visible. + How should time beyond the playback range of the clip be treated? - + - Retarget, IK and write of Transforms are disabled when renderers are not visible. + Adds a clip to the animation with name newName. + + - + - Interface to control AnimatorOverrideController. + 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. + + + + - + - Returns the list of orignal clip from the controller and their override clip. + 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. + + + + - + - The Controller that the AnimatorOverrideController overrides. + Blends the animation named animation towards targetWeight over the next time seconds. + + + - + - Returns either the overriding clip if set or the original clip named name. + Blends the animation named animation towards targetWeight over the next time seconds. + + + - + - Returns either the overriding clip if set or the original clip named name. + Blends the animation named animation towards targetWeight over the next time seconds. + + + - + - The mode of the Animator's recorder. + Fades the animation with name animation in over a period of time seconds and fades other animations out. + + + - + - The Animator recorder is offline. + Fades the animation with name animation in over a period of time seconds and fades other animations out. + + + - + - The Animator recorder is in Playback. + Fades the animation with name animation in over a period of time seconds and fades other animations out. + + + - + - The Animator recorder is in Record. + Cross fades an animation after previous animations has finished playing. + + + + - + - Information about the current or next state. + Cross fades an animation after previous animations has finished playing. + + + + - + - The full path hash for this state. + Cross fades an animation after previous animations has finished playing. + + + + - + - Current duration of the state. + Cross fades an animation after previous animations has finished playing. + + + + - + - Is the state looping. + Get the number of clips currently assigned to this animation. - + - The hashed name of the State. + Is the animation named name playing? + - + - Normalized time of the State. + Plays an animation without any blending. + + - + - The hash is generated using Animator::StringToHash. The string to pass doest not include the parent layer's name. + Plays an animation without any blending. + + - + - The playback speed of the animation. 1 is the normal playback speed. + Plays an animation without any blending. + + - + - The speed multiplier for this state. + Plays an animation without any blending. + + - + - The Tag of the State. + Plays an animation after previous animations has finished playing. + + + - + - Does name match the name of the active state in the statemachine? + Plays an animation after previous animations has finished playing. - + + + - + - Does tag match the tag of the active state in the statemachine. + Plays an animation after previous animations has finished playing. - + + + - + - Information about the current transition. + Remove clip from the animation list. + - + - Returns true if the transition is from an AnyState node, or from Animator.CrossFade(). + Remove clip from the animation list. + - + - The unique name of the Transition. + Rewinds the animation named name. + - + - The simplified name of the Transition. + Rewinds all animations. - + - Normalized time of the Transition. + Samples animations at the current state. - + - The user-specidied name of the Transition. + Stops all playing animations that were started with this Animation. - + - Does name match the name of the active Transition. + Stops an animation named name. - + - Does userName match the name of the active Transition. + Returns the animation state named name. - - + - The update mode of the Animator. + Used by Animation.Play function. - + - Updates the animator during the physic loop in order to have the animation system synchronized with the physics engine. + Animations will be added. - + - Normal update of the animator. + Animations will be blended. - + - Animator updates independently of Time.timeScale. + Stores keyframe based animations. - + - Various utilities for animator manipulation. + Animation Events for this animation clip. - + - This function will recreate all transform hierarchy under GameObject. + Frame rate at which keyframes are sampled. (Read Only) - 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. + Returns true if the animation contains curve that drives a humanoid rig. - GameObject to Optimize. - List of transform name to expose. - + - Anisotropic filtering mode. + Set to true if the AnimationClip will be used with the Legacy Animation component ( instead of the Animator ). - + - Disable anisotropic filtering for all textures. + Animation length in seconds. (Read Only) - + - Enable anisotropic filtering, as set for each texture. + AABB of this Animation Clip in local space of Animation component that it is attached too. - + - Enable anisotropic filtering for all textures. + Sets the default wrap mode used in the animation state. - + - A class for Apple TV remote input configuration. + Adds an animation event to the clip. + AnimationEvent to add. - + - 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. + Clears all curves from the clip. - + - Configures if Apple TV Remote should autorotate all the inputs when Remote is being held in horizontal orientation. Default is false. + Creates a new animation clip. - + - 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. + Realigns quaternion keys to ensure shortest interpolation paths. - + - 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. + Samples an animation at a given time for any animated properties. + The animated game object. + The time to sample an animation. - + - Access to application run-time data. + 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. - + - The absolute path to the web player data file (Read Only). + This class defines a pair of clips used by AnimatorOverrideController. - + - Priority of background loading thread. + The original clip from the controller. - + - Returns application bundle identifier at runtime. + The override animation clip. - + - A unique cloud project identifier. It is unique for every project (Read Only). + This enum controlls culling of Animation component. - + - Return application company name (Read Only). + Animation culling is disabled - object is animated even when offscreen. - + - Contains the path to the game data folder (Read Only). + Animation is disabled when renderers are not visible. - + - Returns false if application is altered in any way after it was built. + Store a collection of Keyframes that can be evaluated over time. - + - Returns true if application integrity can be confirmed. + All keys defined in the animation curve. - + - Returns application install mode (Read Only). + The number of keys in the curve. (Read Only) - + - Returns the type of Internet reachability currently possible on the device. + The behaviour of the animation after the last keyframe. - + - Is the current Runtime platform a known console platform. + The behaviour of the animation before the first keyframe. - + - Are we running inside the Unity editor? (Read Only) + 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. + - + - Is some level being loaded? (Read Only) + 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. + - + - Is the current Runtime platform a known mobile platform. + Creates an animation curve from an arbitrary number of keyframes. + An array of Keyframes used to define the curve. - + - Returns true when in any kind of player (Read Only). + Creates an empty animation curve. - + - Checks whether splash screen is being shown. + 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. + - + - Are we running inside a web player? (Read Only) + 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. + - + - The total number of levels available (Read Only). + 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 (straight) curve created from the values specified. + - + - The level index that was last loaded (Read Only). + 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. + - + - The name of the level that was last loaded (Read Only). + Removes a key. + The index of the key to remove. - + - Event that is fired if a log message is received. + 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. - + - Event that is fired if a log message is received. + Retrieves the key at index. (Read Only) - - + - Contains the path to a persistent data directory (Read Only). + AnimationEvent lets you call a script function similar to SendMessage as part of playing back an animation. - + - Returns the platform the game is running on (Read Only). + The animation state that fired this event (Read Only). - + - Returns application product name (Read Only). + The animator clip info related to this event (Read Only). - + - Should the player be running when the application is in the background? + The animator state info related to this event (Read Only). - + - Returns application running in sandbox (Read Only). + Float parameter that is stored in the event and will be sent to the function. - + - The path to the web player data file relative to the html file (Read Only). + The name of the function that will be called. - + - Stack trace logging options. The default value is StackTraceLogType.ScriptOnly. + Int parameter that is stored in the event and will be sent to the function. - + - How many bytes have we downloaded from the main unity web stream (Read Only). + Returns true if this Animation event has been fired by an Animator component. - + - Contains the path to the StreamingAssets folder (Read Only). + Returns true if this Animation event has been fired by an Animation component. - + - The language the user's operating system is running in. + Function call options. - + - Instructs game to try to render at a specified frame rate. + Object reference parameter that is stored in the event and will be sent to the function. - + - Contains the path to a temporary data / cache directory (Read Only). + String parameter that is stored in the event and will be sent to the function. - + - The version of the Unity runtime used to play the content. + The time at which the event will be fired off. - + - Returns application version number (Read Only). + Creates a new animation event. - + - Indicates whether Unity's webplayer security model is enabled. + Information about what animation clips is played and its weight. - + - Delegate method for fetching advertising ID. + Animation clip that is played. - 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. + The weight of the animation clip. - + - Can the streamed level be loaded? + The AnimationState gives full control over animation blending. - - + - Can the streamed level be loaded? + Which blend mode should be used? - - + - Captures a screenshot at path filename as a PNG file. + The clip that is being played by this animation state. - Pathname to save the screenshot file to. - Factor by which to increase resolution. - + - Captures a screenshot at path filename as a PNG file. + Enables / disables the animation. - Pathname to save the screenshot file to. - Factor by which to increase resolution. - + - Calls a function in the containing web page (Web Player only). + The length of the animation clip in seconds. - - - + - Evaluates script function in the containing web page. + The name of the animation. - The Javascript function to call. - + - How far has the download progressed? [0...1]. + The normalized playback speed. - - + - How far has the download progressed? [0...1]. + The normalized time of the animation. - - + - Is Unity activated with the Pro license? + The playback speed of the animation. 1 is normal playback speed. - + - Check if the user has authorized use of the webcam or microphone in the Web Player. + The current time of the animation. - - + - Loads the level by its name or index. + The weight of animation. - The level to load. - The name of the level to load. - + - Loads the level by its name or index. + Wrapping mode of the animation. - The level to load. - The name of the level to load. - + - Loads a level additively. + 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. - + - Loads a level additively. + 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. - + - Loads the level additively and asynchronously in the background. + Removes a transform which should be animated. - - + - + - Loads the level additively and asynchronously in the background. + Interface to control the Mecanim animation system. - - - + - Loads the level asynchronously in the background. + Gets the avatar angular velocity for the last evaluated frame. - - - + - Loads the level asynchronously in the background. + When turned on, animations will be executed in the physics loop. This is only useful in conjunction with kinematic rigidbodies. - - - + - Use this delegate type with Application.logMessageReceived or Application.logMessageReceivedThreaded to monitor what gets logged. + Should root motion be applied? - - - - + - Opens the url in a browser. + Gets/Sets the current Avatar. - - + - Quits the player application. + The position of the body center of mass. - + - Request advertising ID for iOS, Android and Windows Store. + The rotation of the body center of mass. - Delegate method. - - Platforms that don't support Advertising Identifier return value is false and the delegate method is not invoked. - - + - Request authorization to use the webcam or microphone in the Web Player. + Controls culling of this Animator component. - - + - 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. + Gets the avatar delta position for the last evaluated frame. - 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. + Gets the avatar delta rotation for the last evaluated frame. - 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). + Blends pivot point between body center of mass and feet pivot. At 0%, the blending point is body center of mass. At 100%, the blending point is feet pivot. - + - Application installed via ad hoc distribution. + The current gravity weight based on current animations that are played. - + - Application installed via developer build. + Returns true if Animator has any playables assigned to it. - + - Application running in editor. + Returns true if the current rig has root motion. - + - Application installed via enterprise distribution. + Returns true if the object has a transform hierarchy. - + - Application installed via online store. + Returns the scale of the current Avatar for a humanoid rig, (1 by default if the rig is generic). - + - Application install mode unknown. + Returns true if the current rig is humanoid, false if it is generic. - + - Application sandbox type. + Returns whether the animator is initialized successfully. - + - Application not running in a sandbox. + If automatic matching is active. - + - Application is running in broken sandbox. + Returns true if the current rig is optimizable with AnimatorUtility.OptimizeTransformHierarchy. - + - Application is running in a sandbox. + See IAnimatorControllerPlayable.layerCount. - + - Application sandbox type is unknown. + Additional layers affects the center of mass. - + - Applies forces within an area. + Get left foot bottom height. - + - The angular drag to apply to rigid-bodies. + When linearVelocityBlending is set to true, the root motion velocity and angular velocity will be blended linearly. - + - The linear drag to apply to rigid-bodies. + See IAnimatorControllerPlayable.parameterCount. - + - The angle of the force to be applied. + Read only acces to the AnimatorControllerParameters used by the animator. - + - The magnitude of the force to be applied. + Get the current position of the pivot. - + - The target for where the effector applies any force. + Gets the pivot weight. - + - The variation of the magnitude of the force to be applied. + The PlayableGraph created by the Animator. - + - Should the forceAngle use global space? + Sets the playback position in the recording buffer. - + - Assembly level attribute. Any classes in an assembly with this attribute will be considered to be Editor Classes. + Gets the mode of the Animator recorder. - + - Constructor. + Start time of the first frame of the buffer relative to the frame at which StartRecording was called. - + - The Assert class contains assertion methods for setting invariants in the code. + End time of the recorded clip relative to when StartRecording was called. - + - Should an exception be thrown on a failure. + Get right foot bottom height. - + - 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. + The root position, the position of the game object. - 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. + The root rotation, the rotation of the game object. - 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. + The runtime representation of AnimatorController that controls the Animator. - 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. + The playback speed of the Animator. 1 is normal playback speed. - Tolerance of approximation. - - - - + - Asserts that the values are equal. If no comparer is specified, EqualityComparer<T>.Default is used. + Automatic stabilization of feet during transition and blending. - - - - - + - Asserts that the values are equal. If no comparer is specified, EqualityComparer<T>.Default is used. + Returns the position of the target specified by SetTarget(AvatarTarget targetIndex, float targetNormalizedTime)). - - - - - + - Asserts that the values are equal. If no comparer is specified, EqualityComparer<T>.Default is used. + Returns the rotation of the target specified by SetTarget(AvatarTarget targetIndex, float targetNormalizedTime)). - - - - - + - 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. + Specifies the update mode of the Animator. - 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. + Gets the avatar velocity for the last evaluated frame. - 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. + Apply the default Root Motion. - 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. + See IAnimatorControllerPlayable.CrossFade. - Tolerance of approximation. - - - + + + + + - + - Asserts that the values are not equal. + See IAnimatorControllerPlayable.CrossFade. - - - - + + + + + - + - Asserts that the values are not equal. + See IAnimatorControllerPlayable.CrossFadeInFixedTime. - - - - + + + + + - + - Asserts that the values are not equal. + See IAnimatorControllerPlayable.CrossFadeInFixedTime. - - - - + + + + + - + - Asserts that the condition is false. + See IAnimatorControllerPlayable.GetAnimatorTransitionInfo. - - + - + - Asserts that the condition is false. + Return the first StateMachineBehaviour that match type T or derived from T. Return null if none are found. - - - + - Asserts that the value is not null. + Returns all StateMachineBehaviour that match type T or are derived from T. Returns null if none are found. - - - + - Asserts that the value is not null. + Returns transform mapped to this human bone id. - - + The human bone that is queried, see enum HumanBodyBones for a list of possible values. - + - Asserts that the value is null. + See IAnimatorControllerPlayable.GetBool. - - + + - + - Asserts that the value is null. + See IAnimatorControllerPlayable.GetBool. - - + + - + - Asserts that the condition is true. + Gets the list of AnimatorClipInfo currently played by the current state. - - + The layer's index. - + - Asserts that the condition is true. + See IAnimatorControllerPlayable.GetCurrentAnimatorClipInfo. - - + - + - An exception that is thrown on a failure. Assertions.Assert._raiseExceptions needs to be set to true. + See IAnimatorControllerPlayable.GetCurrentAnimatorClipInfo. + + - + - A float comparer used by Assertions.Assert performing approximate comparison. + See IAnimatorControllerPlayable.GetCurrentAnimatorClipInfoCount. + - + - Default epsilon used by the comparer. + See IAnimatorControllerPlayable.GetCurrentAnimatorStateInfo. + - + - Default instance of a comparer class with deafult error epsilon and absolute error check. + See IAnimatorControllerPlayable.GetFloat. + + - + - Performs equality check with absolute error check. + See IAnimatorControllerPlayable.GetFloat. - Expected value. - Actual value. - Comparison error. - - Result of the comparison. - + + - + - Performs equality check with relative error check. + Gets the position of an IK hint. - Expected value. - Actual value. - Comparison error. + The AvatarIKHint that is queried. - Result of the comparison. + Return the current position of this IK hint in world space. - + - Creates an instance of the comparer. + Gets the translative weight of an IK Hint (0 = at the original animation before IK, 1 = at the hint). - 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. + The AvatarIKHint that is queried. + + Return translative weight. + - + - Creates an instance of the comparer. + Gets the position of an IK goal. - 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. + The AvatarIKGoal that is queried. + + Return the current position of this IK goal in world space. + - + - Creates an instance of the comparer. + Gets the translative weight of an IK goal (0 = at the original animation before IK, 1 = at the goal). - 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. + The AvatarIKGoal that is queried. - + - An extension class that serves as a wrapper for the Assert class. + Gets the rotation of an IK goal. + The AvatarIKGoal that is is queried. - + - An extension method for Assertions.Assert.AreApproximatelyEqual. + Gets the rotational weight of an IK goal (0 = rotation before IK, 1 = rotation at the IK goal). - - - - + The AvatarIKGoal that is queried. - + - An extension method for Assertions.Assert.AreApproximatelyEqual. + See IAnimatorControllerPlayable.GetInteger. - - - - + + - + - An extension method for Assertions.Assert.AreApproximatelyEqual. + See IAnimatorControllerPlayable.GetInteger. - - - - + + - + - An extension method for Assertions.Assert.AreApproximatelyEqual. + See IAnimatorControllerPlayable.GetLayerIndex. - - - - + - + - An extension method for Assertions.Assert.AreEqual. + See IAnimatorControllerPlayable.GetLayerName. - - - + - + - An extension method for Assertions.Assert.AreEqual. + See IAnimatorControllerPlayable.GetLayerWeight. - - - + - + - An extension method for Assertions.Assert.IsFalse. + Gets the list of AnimatorClipInfo currently played by the next state. - - + The layer's index. - + - An extension method for Assertions.Assert.IsFalse. + See IAnimatorControllerPlayable.GetNextAnimatorClipInfo. - - + - + - An extension method for Assertions.Assert.IsNull. + See IAnimatorControllerPlayable.GetNextAnimatorClipInfo. - - + + - + - An extension method for Assertions.Assert.IsNull. + See IAnimatorControllerPlayable.GetNextAnimatorClipInfoCount. - - + - + - An extension method for Assertions.Assert.IsTrue. + See IAnimatorControllerPlayable.GetNextAnimatorStateInfo. - - + - + - An extension method for Assertions.Assert.IsTrue. + See AnimatorController.GetParameter. - - + - + - An extension method for Assertions.Assert.AreNotApproximatelyEqual. + Gets the value of a quaternion parameter. - - - - + The name of the parameter. - + - An extension method for Assertions.Assert.AreNotApproximatelyEqual. + Gets the value of a quaternion parameter. - - - - + The id of the parameter. The id is generated using Animator::StringToHash. - + - An extension method for Assertions.Assert.AreNotApproximatelyEqual. + Gets the value of a vector parameter. - - - - + The name of the parameter. - + - An extension method for Assertions.Assert.AreNotApproximatelyEqual. + Gets the value of a vector parameter. - - - - + The id of the parameter. The id is generated using Animator::StringToHash. - + - An extension method for Assertions.Assert.AreNotEqual. + See IAnimatorControllerPlayable.HasState. - - - + + - + - An extension method for Assertions.Assert.AreNotEqual. + Interrupts the automatic target matching. - - - + - + - An extension method for Assertions.Assert.AreNotNull. + Interrupts the automatic target matching. - - + - + - An extension method for Assertions.Assert.AreNotNull. + Returns true if the transform is controlled by the Animator\. - - + The transform that is queried. - + - AssetBundles let you stream additional assets via the WWW class and instantiate them at runtime. AssetBundles are created via BuildPipeline.BuildAssetBundle. + See IAnimatorControllerPlayable.IsInTransition. + - + - Main asset that was supplied when building the asset bundle (Read Only). + See IAnimatorControllerPlayable.IsParameterControlledByCurve. + + - + - Check if an AssetBundle contains a specific object. + See IAnimatorControllerPlayable.IsParameterControlledByCurve. + - + - Loads an asset bundle from a disk. + Automatically adjust the gameobject position and rotation so that the AvatarTarget reaches the matchPosition when the current state is at the specified progress. - Path of the file on disk - -See Also: WWW.assetBundle, WWW.LoadFromCacheOrDownload. + 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. - + - Asynchronously create an AssetBundle from a memory region. + See IAnimatorControllerPlayable.Play. - + + + + - + - Synchronously create an AssetBundle from a memory region. + See IAnimatorControllerPlayable.Play. - Array of bytes with the AssetBundle data. + + + + - + - Return all asset names in the AssetBundle. + See IAnimatorControllerPlayable.PlayInFixedTime. + + + + - + - Return all the scene asset paths (paths to *.unity assets) in the AssetBundle. + See IAnimatorControllerPlayable.PlayInFixedTime. + + + + - + - Loads all assets contained in the asset bundle that inherit from type. + Rebind all the animated properties and mesh data with the Animator. - - + - Loads all assets contained in the asset bundle. + See IAnimatorControllerPlayable.ResetTrigger. + + - + - Loads all assets contained in the asset bundle that inherit from type T. + See IAnimatorControllerPlayable.ResetTrigger. + + - + - Loads all assets contained in the asset bundle asynchronously. + Sets local rotation of a human bone during a IK pass. + The human bone Id. + The local rotation. - + - Loads all assets contained in the asset bundle that inherit from T asynchronously. + See IAnimatorControllerPlayable.SetBool. + + + - + - Loads all assets contained in the asset bundle that inherit from type asynchronously. + See IAnimatorControllerPlayable.SetBool. - + + + - + - Loads asset with name from the bundle. + See IAnimatorControllerPlayable.SetFloat. + + + + - + - Loads asset with name of a given type from the bundle. + See IAnimatorControllerPlayable.SetFloat. - + + + + - + - Loads asset with name of type T from the bundle. + See IAnimatorControllerPlayable.SetFloat. + + + + - + - Asynchronously loads asset with name from the bundle. + See IAnimatorControllerPlayable.SetFloat. + + + + - + - Asynchronously loads asset with name of a given T from the bundle. + Sets the position of an IK hint. - + The AvatarIKHint that is set. + The position in world space. - + - Asynchronously loads asset with name of a given type from the bundle. + 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. - + - Loads asset and sub assets with name from the bundle. + Sets the position of an IK goal. - + The AvatarIKGoal that is set. + The position in world space. - + - Loads asset and sub assets with name of a given type from the bundle. + 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. - + - Loads asset and sub assets with name of type T from the bundle. + Sets the rotation of an IK goal. - + The AvatarIKGoal that is set. + The rotation in world space. - + - Loads asset with sub assets with name from the bundle asynchronously. + 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. - + - Loads asset with sub assets with name of type T from the bundle asynchronously. + See IAnimatorControllerPlayable.SetInteger. + + - + - Loads asset with sub assets with name of a given type from the bundle asynchronously. + See IAnimatorControllerPlayable.SetInteger. - + + - + - Synchronously loads an AssetBundle from a file on disk. + See IAnimatorControllerPlayable.SetLayerWeight. - 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. + Sets the look at position. - 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. - + The position to lookAt. - + - Synchronously create an AssetBundle from a memory region. + Set look at weights. - 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. - + (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). - + - Asynchronously create an AssetBundle from a memory region. + Set look at weights. - 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. - + (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). - + - Unloads all assets in the bundle. + 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). - + - Asynchronous create request for an AssetBundle. + 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). - + - Asset object being loaded (Read Only). + 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). - + - Manifest for all the assetBundle in the build. + Sets the value of a quaternion parameter. + The name of the parameter. + The new value for the parameter. - + - Get all the AssetBundles in the manifest. + Sets the value of a quaternion parameter. - - An array of asset bundle names. - + Of the parameter. The id is generated using Animator::StringToHash. + The new value for the parameter. - + - Get all the AssetBundles with variant in the manifest. + Sets an AvatarTarget and a targetNormalizedTime for the current state. - - An array of asset bundle names. - + The avatar body part that is queried. + The current state Time that is queried. - + - Get all the dependent AssetBundles for the given AssetBundle. + See IAnimatorControllerPlayable.SetTrigger. - Name of the asset bundle. + + - + - Get the hash for the given AssetBundle. + See IAnimatorControllerPlayable.SetTrigger. - Name of the asset bundle. - - The 128-bit hash for the asset bundle. - + + - + - Get the direct dependent AssetBundles for the given AssetBundle. + Sets the value of a vector parameter. - Name of the asset bundle. - - Array of asset bundle names this asset bundle depends on. - + The name of the parameter. + The new value for the parameter. - + - Asynchronous load request from an AssetBundle. + 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. - + - Asset objects with sub assets being loaded. (Read Only) + Sets the animator in playback mode. - + - Asset object being loaded (Read Only). + 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. - + - Asynchronous operation coroutine. + Stops the animator playback mode. When playback stops, the avatar resumes getting control from game logic. - + - Allow scenes to be activated as soon as it is ready. + Stops animator record mode. - + - Has the operation finished? (Read Only) + Generates an parameter id from a string. + The string to convert to Id. - + - Priority lets you tweak in which order async operation calls will be performed. + Evaluates the animator based on deltaTime. + The time delta. - + - What's the operation's progress. (Read Only) + Information about clip being played and blended by the Animator. - + - AudioMixer asset. + Returns the animation clip played by the Animator. - + - Routing target. + Returns the blending weight used by the Animator to blend this clip. - + - Resets an exposed parameter to its initial value. + 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. - 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. + The default bool value for the parameter. - 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. + The default bool value for the parameter. - 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. + The default bool value for the parameter. - 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. + The name of the parameter. - 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. + Returns the hash of the parameter based on its name. - 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. + The type of the parameter. - + - Object representing a snapshot in the mixer. + The type of the parameter. - + - Performs an interpolated transition towards this snapshot over the time interval specified. + Boolean type parameter. - Relative time after which this snapshot should be reached from any current state. - + - The Audio Chorus Filter takes an Audio Clip and processes it creating a chorus effect. + Float type parameter. - + - Chorus delay in ms. 0.1 to 100.0. Default = 40.0 ms. + Int type parameter. - + - Chorus modulation depth. 0.0 to 1.0. Default = 0.03. + Trigger type parameter. - + - Volume of original signal to pass to output. 0.0 to 1.0. Default = 0.5. + Culling mode for the Animator. - + - Chorus feedback. Controls how much of the wet signal gets fed back into the chorus buffer. 0.0 to 1.0. Default = 0.0. + Always animate the entire character. Object is animated even when offscreen. - + - Chorus modulation rate in hz. 0.0 to 20.0. Default = 0.8 hz. + Animation is completely disabled when renderers are not visible. - + - Volume of 1st chorus tap. 0.0 to 1.0. Default = 0.5. + Retarget, IK and write of Transforms are disabled when renderers are not visible. - + - 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. + Interface to control Animator Override Controller. - + - 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. + Returns the list of orignal Animation Clip from the controller and their override Animation Clip. - + - A container for audio data. + Returns the count of overrides. - + - The number of channels in the audio clip. (Read Only) + The Runtime Animator Controller that the Animator Override Controller overrides. - + - The sample frequency of the clip in Hertz. (Read Only) + Applies the list of overrides on this Animator Override Controller. + Overrides list to apply. - + - Returns true if the AudioClip is ready to play (read-only). + Creates an empty Animator Override Controller. - + - The length of the audio clip in seconds. (Read Only) + Creates an Animator Override Controller that overrides controller. + Runtime Animator Controller to override. - + - 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. + Gets the list of Animation Clip overrides currently defined in this Animator Override Controller. + Array to receive results. - + - Returns the current load state of the audio data associated with an AudioClip. + Returns either the overriding Animation Clip if set or the original Animation Clip named name. - + - The load type of the clip (read-only). + Returns either the overriding Animation Clip if set or the original Animation Clip named name. - + - 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 mode of the Animator's recorder. - + - The length of the audio clip in samples. (Read Only) + The Animator recorder is offline. - + - Creates a user AudioClip with a name and with the given length in samples, channels and frequency. + The Animator recorder is in Playback. - 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. + The Animator recorder is in Record. - 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. + Information about the current or next state. - 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. + The full path hash for this state. - 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. + Current duration of the state. - 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. + Is the state looping. - 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. + The hashed name of the State. - - - + - Loads the audio data of a clip. Clips that have "Preload Audio Data" set will load the audio data automatically. + Normalized time of the State. - - Returns true if loading succeeded. - - + - Delegate called each time AudioClip reads data. + The hash is generated using Animator::StringToHash. The string to pass doest not include the parent layer's name. - Array of floats containing data read from the clip. - + - Delegate called each time AudioClip changes read position. + The playback speed of the animation. 1 is the normal playback speed. - New position in the audio clip. - + - Set sample data in a clip. + The speed multiplier for this state. - - - + - Unloads the audio data associated with the clip. This works only for AudioClips that are based on actual sound file assets. + The Tag of the State. - - Returns false if unloading failed. - - + - Determines how the audio clip is loaded in. + Does name match the name of the active state in the statemachine? + - + - The audio data of the clip will be kept in memory in compressed form. + Does tag match the tag of the active state in the statemachine. + - + - The audio data is decompressed when the audio clip is loaded. + Information about the current transition. - + - Streams audio data from disk. + Returns true if the transition is from an AnyState node, or from Animator.CrossFade(). - + - An enum containing different compression types. + The unique name of the Transition. - + - AAC Audio Compression. + The simplified name of the Transition. - + - Adaptive differential pulse-code modulation. + Normalized time of the Transition. - + - Nintendo ADPCM audio compression format. + The user-specified name of the Transition. - + - Sony proprietory hardware codec. + Does name match the name of the active Transition. + - + - MPEG Audio Layer III. + Does userName match the name of the active Transition. + - + - Uncompressed pulse-code modulation. + The update mode of the Animator. - + - Sony proprietary hardware format. + Updates the animator during the physic loop in order to have the animation system synchronized with the physics engine. - + - Vorbis compression format. + Normal update of the animator. - + - Xbox One proprietary hardware format. + Animator updates independently of Time.timeScale. - + - Specifies the current properties or desired properties to be set for the audio system. + Various utilities for animator manipulation. - + - The length of the DSP buffer in samples determining the latency of sounds by the audio output device. + This function will recreate all transform hierarchy under GameObject. + GameObject to Deoptimize. - + - The current maximum number of simultaneously audible sounds in the game. + 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. - + - The maximum number of managed sounds in the game. Beyond this limit sounds will simply stop playing. + Anisotropic filtering mode. - + - The current sample rate of the audio output device used. + Disable anisotropic filtering for all textures. - + - The current speaker mode used by the audio output device. + Enable anisotropic filtering, as set for each texture. - + - Value describing the current load state of the audio data associated with an AudioClip. + Enable anisotropic filtering for all textures. - + - Value returned by AudioClip.loadState for an AudioClip that has failed loading its audio data. + ReplayKit is only available on certain iPhone, iPad and iPod Touch devices running iOS 9.0 or later. - + - Value returned by AudioClip.loadState for an AudioClip that has succeeded loading its audio data. + 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. - + - Value returned by AudioClip.loadState for an AudioClip that is currently loading audio data. + A string property that contains an URL used to redirect the user to an on-going or completed broadcast (Read Only). - + - Value returned by AudioClip.loadState for an AudioClip that has no audio data loaded and where loading has not been initiated yet. + Camera enabled status, true, if camera enabled, false otherwise. - + - The Audio Distortion Filter distorts the sound from an AudioSource or. + Boolean property that indicates whether a broadcast is currently in progress (Read Only). - + - Distortion value. 0.0 to 1.0. Default = 0.5. + A boolean that indicates whether ReplayKit is making a recording (where True means a recording is in progress). (Read Only) - + - The Audio Echo Filter repeats a sound after a given Delay, attenuating. + A string value of the last error incurred by the ReplayKit: Either 'Failed to get Screen Recorder' or 'No recording available'. (Read Only) - + - Echo decay per delay. 0 to 1. 1.0 = No decay, 0.0 = total decay (i.e. simple 1 line delay). Default = 0.5. + Microphone enabled status, true, if microhone enabled, false otherwise. - + - Echo delay in ms. 10 to 5000. Default = 500. + A boolean value that indicates that a new recording is available for preview (where True means available). (Read Only) - + - Volume of original signal to pass to output. 0.0 to 1.0. Default = 1.0. + A boolean that indicates whether the ReplayKit API is available (where True means available). (Read Only) - + - Volume of echo signal to pass to output. 0.0 to 1.0. Default = 1.0. + 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. - + - The Audio High Pass Filter passes high frequencies of an AudioSource and. + Discard the current recording. + + A boolean value of True if the recording was discarded successfully or False if an error occurred. + - + - Highpass cutoff frequency in hz. 10.0 to 22000.0. Default = 5000.0. + Hide the camera preview view. - + - Determines how much the filter's self-resonance isdampened. + Preview the current recording + + A boolean value of True if the video preview window opened successfully or False if an error occurred. + - + - Representation of a listener in 3D space. + Shows camera preview at coordinates posX and posY. + + - + - The paused state of the audio system. + 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. - + - This lets you set whether the Audio Listener should be updated in the fixed or dynamic update. + 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. + - + - Controls the game sound volume (0.0 to 1.0). + Stops current broadcast. +Will terminate currently on-going broadcast. If no broadcast is in progress, does nothing. - + - Provides a block of the listener (master)'s output data. + Stop the current recording. - The array to populate with audio samples. Its length must be a power of 2. - The channel to sample from. + + A boolean value of True if recording stopped successfully or False if an error occurred. + - + - Deprecated Version. Returns a block of the listener (master)'s output data. + A class for Apple TV remote input configuration. - - - + - Provides a block of the listener (master)'s spectrum data. + 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. - 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. + Configures if Apple TV Remote should autorotate all the inputs when Remote is being held in horizontal orientation. Default is false. - - - - + - The Audio Low Pass Filter filter passes low frequencies of an. + 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. - + - Returns or sets the current custom frequency cutoff curve. + 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. - + - Lowpass cutoff frequency in hz. 10.0 to 22000.0. Default = 5000.0. + Access to application run-time data. - + - Determines how much the filter's self-resonance is dampened. + The absolute path to the web player data file (Read Only). - + - The Audio Reverb Filter takes an Audio Clip and distortionates it in a. + Priority of background loading thread. - + - Decay HF Ratio : High-frequency to low-frequency decay time ratio. Ranges from 0.1 to 2.0. Default is 0.5. + Returns a GUID for this build (Read Only). - + - Reverberation decay time at low-frequencies in seconds. Ranges from 0.1 to 20.0. Default is 1.0. + A unique cloud project identifier. It is unique for every project (Read Only). - + - Reverberation density (modal density) in percent. Ranges from 0.0 to 100.0. Default is 100.0. + Return application company name (Read Only). - + - Reverberation diffusion (echo density) in percent. Ranges from 0.0 to 100.0. Default is 100.0. + Contains the path to the game data folder (Read Only). - + - Mix level of dry signal in output in mB. Ranges from -10000.0 to 0.0. Default is 0. + Returns false if application is altered in any way after it was built. - + - Reference high frequency in Hz. Ranges from 20.0 to 20000.0. Default is 5000.0. + Returns true if application integrity can be confirmed. - + - Reference low-frequency in Hz. Ranges from 20.0 to 1000.0. Default is 250.0. + 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. - + - Late reverberation level relative to room effect in mB. Ranges from -10000.0 to 2000.0. Default is 0.0. + Returns the name of the store or package that installed the application (Read Only). - + - Early reflections level relative to room effect in mB. Ranges from -10000.0 to 1000.0. Default is -10000.0. + Returns application install mode (Read Only). - + - Late reverberation delay time relative to first reflection in seconds. Ranges from 0.0 to 0.1. Default is 0.04. + Returns the type of Internet reachability currently possible on the device. - + - Late reverberation level relative to room effect in mB. Ranges from -10000.0 to 2000.0. Default is 0.0. + Is the current Runtime platform a known console platform. - + - Set/Get reverb preset properties. + Are we running inside the Unity editor? (Read Only) - + - Room effect level at low frequencies in mB. Ranges from -10000.0 to 0.0. Default is 0.0. + Whether the player currently has focus. Read-only. - + - Room effect high-frequency level re. low frequency level in mB. Ranges from -10000.0 to 0.0. Default is 0.0. + Is some level being loaded? (Read Only) - + - Room effect low-frequency level in mB. Ranges from -10000.0 to 0.0. Default is 0.0. + Is the current Runtime platform a known mobile platform. - + - Rolloff factor for room effect. Ranges from 0.0 to 10.0. Default is 10.0. + Returns true when in any kind of player (Read Only). - + - Reverb presets used by the Reverb Zone class and the audio reverb filter. + Checks whether splash screen is being shown. - + - Alley preset. + Are we running inside a web player? (Read Only) - + - Arena preset. + The total number of levels available (Read Only). - + - Auditorium preset. + The level index that was last loaded (Read Only). - + - Bathroom preset. + The name of the level that was last loaded (Read Only). - + - Carpeted hallway preset. + Event that is fired if a log message is received. + - + - Cave preset. + Event that is fired if a log message is received. + - + - City preset. + This event occurs when a mobile device notifies of low memory. You can release other non-critical assets from memory in response to this in order to avoid the app being terminated. For example, textures audio clips or also loading smaller versions of such assets. + - + - Concert hall preset. + Contains the path to a persistent data directory (Read Only). - + - Dizzy preset. + Returns the platform the game is running on (Read Only). - + - Drugged preset. + Returns application product name (Read Only). - + - Forest preset. + Should the player be running when the application is in the background? - + - Generic preset. + Returns application running in sandbox (Read Only). - + - Hallway preset. + The path to the web player data file relative to the html file (Read Only). - + - Hangar preset. + Stack trace logging options. The default value is StackTraceLogType.ScriptOnly. - + - Livingroom preset. + How many bytes have we downloaded from the main unity web stream (Read Only). - + - Mountains preset. + Contains the path to the StreamingAssets folder (Read Only). - + - No reverb preset selected. + The language the user's operating system is running in. - + - Padded cell preset. + Instructs game to try to render at a specified frame rate. - + - Parking Lot preset. + Contains the path to a temporary data / cache directory (Read Only). - + - Plain preset. + The version of the Unity runtime used to play the content. - + - Psychotic preset. + Returns application version number (Read Only). - + - Quarry preset. + Indicates whether Unity's webplayer security model is enabled. - + - Room preset. + Delegate method for fetching advertising ID. + Advertising ID. + Indicates whether user has chosen to limit ad tracking. + Error message. - + - Sewer pipe preset. + Cancels quitting the application. This is useful for showing a splash screen at the end of a game. - + - Stone corridor preset. + Can the streamed level be loaded? + - + - Stoneroom preset. + Can the streamed level be loaded? + - + - Underwater presset. + Captures a screenshot at path filename as a PNG file. + Pathname to save the screenshot file to. + Factor by which to increase resolution. - + - User defined preset. + Captures a screenshot at path filename as a PNG file. + Pathname to save the screenshot file to. + Factor by which to increase resolution. - + - Reverb Zones are used when you want to create location based ambient effects in the scene. + 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. - + - High-frequency to mid-frequency decay time ratio. + Execution of a script function in the contained web page. + The Javascript function to call. - + - Reverberation decay time at mid frequencies. + Returns an array of feature tags in use for this build (Read Only). - + - Value that controls the modal density in the late reverberation decay. + Get stack trace logging options. The default value is StackTraceLogType.ScriptOnly. + - + - Value that controls the echo density in the late reverberation decay. + How far has the download progressed? [0...1]. + - + - The distance from the centerpoint that the reverb will not have any effect. Default = 15.0. + How far has the download progressed? [0...1]. + - + - The distance from the centerpoint that the reverb will have full effect at. Default = 10.0. + Is Unity activated with the Pro license? - + - Early reflections level relative to room effect. + Check if the user has authorized use of the webcam or microphone in the Web Player. + - + - Initial reflection delay time. + Loads the level by its name or index. + The level to load. + The name of the level to load. - + - Late reverberation level relative to room effect. + Loads the level by its name or index. + The level to load. + The name of the level to load. - + - Late reverberation delay time relative to initial reflection. + Loads a level additively. + + - + - Set/Get reverb preset properties. + Loads a level additively. + + - + - Room effect level (at mid frequencies). + Loads the level additively and asynchronously in the background. + + - + - Relative room effect level at high frequencies. + Loads the level additively and asynchronously in the background. + + - + - Relative room effect level at low frequencies. + Loads the level asynchronously in the background. + + - + - Like rolloffscale in global settings, but for reverb room size effect. + Loads the level asynchronously in the background. + + - + - Reference high frequency (hz). + Use this delegate type with Application.logMessageReceived or Application.logMessageReceivedThreaded to monitor what gets logged. + + + - + - Reference low frequency (hz). + This is the delegate function when a mobile device notifies of low memory. - + - Rolloff modes that a 3D sound can have in an audio source. + Opens the url in a browser. + - + - Use this when you want to use a custom rolloff. + Quits the player application. - + - Use this mode when you want to lower the volume of your sound over the distance. + 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. + - + - Use this mode when you want a real-world rolloff. + Request authorization to use the webcam or microphone in the Web Player. + - + - Controls the global audio settings from script. + Set stack trace logging options. The default value is StackTraceLogType.ScriptOnly. + + - + - Returns the speaker mode capability of the current audio driver. (Read Only) + Unloads the Unity runtime. - + - Returns the current time of the audio system. + 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. + - + - Get the mixer's current output rate. + 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. + - + - Gets the current speaker mode. Default is 2 channel stereo. + Application installation mode (Read Only). - + - 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. + Application installed via ad hoc distribution. - 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. + Application installed via developer build. - - The new configuration to be applied. - - + - Get the mixer's buffer size in samples. + Application running in editor. - Is the length of each buffer in the ringbuffer. - Is number of buffers. - + - 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. + Application installed via enterprise distribution. - 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. + Application installed via online store. - The new configuration to be used. - - True if all settings could be successfully applied. - - + - A representation of audio sources in 3D. + Application install mode unknown. - + - Bypass effects (Applied from filter components or global listener filters). + Application sandbox type. - + - 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. + Application not running in a sandbox. - + - When set doesn't route the signal from an AudioSource into the global reverb associated with reverb zones. + Application is running in broken sandbox. - + - The default AudioClip to play. + Application is running in a sandbox. - + - Sets the Doppler scale for this AudioSource. + Application sandbox type is unknown. - + - 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. + Applies forces within an area. - + - This makes the audio source not take into account the volume of the audio listener. + The angular drag to apply to rigid-bodies. - + - Is the clip playing right now (Read Only)? + The linear drag to apply to rigid-bodies. - + - Is the audio clip looping? + The angle of the force to be applied. - + - (Logarithmic rolloff) MaxDistance is the distance a sound stops attenuating at. + The magnitude of the force to be applied. - + - Within the Min distance the AudioSource will cease to grow louder in volume. + The target for where the effector applies any force. - + - Un- / Mutes the AudioSource. Mute sets the volume=0, Un-Mute restore the original volume. + The variation of the magnitude of the force to be applied. - + - The target group to which the AudioSource should route its signal. + Should the forceAngle use global space? - + - Pan has been deprecated. Use panStereo instead. + Assembly level attribute. Any classes in an assembly with this attribute will be considered to be Editor Classes. - + - PanLevel has been deprecated. Use spatialBlend instead. + Constructor. - + - Pans a playing sound in a stereo way (left or right). This only applies to sounds that are Mono or Stereo. + The Assert class contains assertion methods for setting invariants in the code. - + - The pitch of the audio source. + Should an exception be thrown on a failure. - + - If set to true, the audio source will automatically start playing on awake. + 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. + + + - + - Sets the priority of the AudioSource. + 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. + + + - + - The amount by which the signal from the AudioSource will be mixed into the global reverb associated with the Reverb Zones. + 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. + + + - + - Sets/Gets how the AudioSource attenuates over distance. + 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. + + + - + - 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. + Asserts that the values are equal. If no comparer is specified, EqualityComparer<T>.Default is used. + + + + - + - Enables or disables spatialization. + Asserts that the values are equal. If no comparer is specified, EqualityComparer<T>.Default is used. + + + + - + - Sets the spread angle (in degrees) of a 3d stereo or multichannel sound in speaker space. + Asserts that the values are equal. If no comparer is specified, EqualityComparer<T>.Default is used. + + + + - + - Playback position in seconds. + 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. + + + - + - Playback position in PCM samples. + 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. + + + - + - Whether the Audio Source should be updated in the fixed or dynamic update. + 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. + + + - + - The volume of the audio source (0.0 to 1.0). + 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. + + + - + - Get the current custom curve for the given AudioSourceCurveType. + Asserts that the values are not equal. - 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. + Asserts that the values are not equal. - 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. + Asserts that the values are not equal. - - + + + + - + - Reads a user-defined parameter of a custom spatializer effect that is attached to an AudioSource. + Asserts that the condition is false. - 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. - - - - + + - + - Pauses playing the clip. + Asserts that the condition is false. + + - + - Plays the clip with an optional certain delay. + Asserts that the value is not null. - 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 with an optional certain delay. + Asserts that the value is not null. - 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. + Asserts that the value is null. - Audio data to play. - Position in world space from which sound originates. - Playback volume. + + - + - Plays an AudioClip at a given position in world space. + Asserts that the value is null. - 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. + Asserts that the condition is true. - Delay time specified in seconds. + + - + - Plays an AudioClip, and scales the AudioSource volume by volumeScale. + Asserts that the condition is true. - The clip being played. - The scale of the volume (0-1). + + - + - Plays an AudioClip, and scales the AudioSource volume by volumeScale. + An exception that is thrown on a failure. Assertions.Assert._raiseExceptions needs to be set to true. - 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. + A float comparer used by Assertions.Assert performing approximate comparison. - Time in seconds on the absolute time-line that AudioSettings.dspTime refers to for when the sound should start playing. - + - Set the custom curve for the given AudioSourceCurveType. + Default epsilon used by the comparer. - 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. + Default instance of a comparer class with deafult error epsilon and absolute error check. - Time in seconds. - + - Changes the time at which a sound that has already been scheduled to play will start. + Performs equality check with absolute error check. - Time in seconds. + Expected value. + Actual value. + Comparison error. + + Result of the comparison. + - + - Sets a user-defined parameter of a custom spatializer effect that is attached to an AudioSource. + Performs equality check with relative error check. - Zero-based index of user-defined parameter to be set. - New value of the user-defined parameter. + Expected value. + Actual value. + Comparison error. - True, if the parameter could be set. + Result of the comparison. - + - Stops playing the clip. + 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. - + - Unpause the paused playback of this AudioSource. + 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. - + - This defines the curve type of the different custom curves that can be queried and set within the AudioSource. + 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. - + - Custom Volume Rolloff. + 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. - + - Reverb Zone Mix. + An extension class that serves as a wrapper for the Assert class. - + - The Spatial Blend. + An extension method for Assertions.Assert.AreApproximatelyEqual. + + + + - + - The 3D Spread. + An extension method for Assertions.Assert.AreApproximatelyEqual. + + + + - + - These are speaker types defined for use with AudioSettings.speakerMode. + An extension method for Assertions.Assert.AreApproximatelyEqual. + + + + - + - Channel count is set to 6. 5.1 speaker setup. This includes front left, front right, center, rear left, rear right and a subwoofer. + An extension method for Assertions.Assert.AreApproximatelyEqual. + + + + - + - 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. + An extension method for Assertions.Assert.AreEqual. + + + - + - Channel count is set to 1. The speakers are monaural. + An extension method for Assertions.Assert.AreEqual. + + + - + - 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. + An extension method for Assertions.Assert.IsFalse. + + - + - Channel count is set to 4. 4 speaker setup. This includes front left, front right, rear left, rear right. + An extension method for Assertions.Assert.IsFalse. + + - + - Channel count is unaffected. + An extension method for Assertions.Assert.IsNull. + + - + - Channel count is set to 2. The speakers are stereo. This is the editor default. + An extension method for Assertions.Assert.IsNull. + + - + - Channel count is set to 5. 5 speaker setup. This includes front left, front right, center, rear left, rear right. + An extension method for Assertions.Assert.IsTrue. + + - + - Type of the imported(native) data. + An extension method for Assertions.Assert.IsTrue. + + - + - Acc - not supported. + An extension method for Assertions.Assert.AreNotApproximatelyEqual. + + + + - + - Aiff. + An extension method for Assertions.Assert.AreNotApproximatelyEqual. + + + + - + - iPhone hardware decoder, supports AAC, ALAC and MP3. Extracodecdata is a pointer to an FMOD_AUDIOQUEUE_EXTRACODECDATA structure. + An extension method for Assertions.Assert.AreNotApproximatelyEqual. + + + + - + - Impulse tracker. + An extension method for Assertions.Assert.AreNotApproximatelyEqual. + + + + - + - Protracker / Fasttracker MOD. + An extension method for Assertions.Assert.AreNotEqual. + + + - + - MP2/MP3 MPEG. + An extension method for Assertions.Assert.AreNotEqual. + + + - + - Ogg vorbis. + An extension method for Assertions.Assert.AreNotNull. + + - + - ScreamTracker 3. + An extension method for Assertions.Assert.AreNotNull. + + - + - 3rd party / unknown plugin format. + AssetBundles let you stream additional assets via the WWW class and instantiate them at runtime. AssetBundles are created via BuildPipeline.BuildAssetBundle. - + - VAG. + Return true if the AssetBundle is a streamed scene AssetBundle. - + - Microsoft WAV. + Main asset that was supplied when building the asset bundle (Read Only). - + - FastTracker 2 XM. + Check if an AssetBundle contains a specific object. + - + - Xbox360 XMA. + Loads an asset bundle from a disk. + Path of the file on disk + +See Also: WWW.assetBundle, WWW.LoadFromCacheOrDownload. - + - Describes when an AudioSource or AudioListener is updated. + Asynchronously create an AssetBundle from a memory region. + - + - Updates the source or listener in the fixed update loop if it is attached to a Rigidbody, dynamic otherwise. + Synchronously create an AssetBundle from a memory region. + Array of bytes with the AssetBundle data. - + - Updates the source or listener in the dynamic update loop. + Return all asset names in the AssetBundle. - + - Updates the source or listener in the fixed update loop. + Return all the scene asset paths (paths to *.unity assets) in the AssetBundle. - + - Avatar definition. + Loads all assets contained in the asset bundle that inherit from type. + - + - Return true if this avatar is a valid human avatar. + Loads all assets contained in the asset bundle. - + - Return true if this avatar is a valid mecanim avatar. It can be a generic avatar or a human avatar. + Loads all assets contained in the asset bundle that inherit from type T. - + - Class to build avatars from user scripts. + Loads all assets contained in the asset bundle asynchronously. - + - Create a new generic avatar. + Loads all assets contained in the asset bundle that inherit from T asynchronously. - 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. + Loads all assets contained in the asset bundle that inherit from type asynchronously. - Root object of your transform hierachy. - Description of the avatar. + - + - IK Goal. + Loads asset with name from the bundle. + - + - The left foot. + Loads asset with name of a given type from the bundle. + + - + - The left hand. + Loads asset with name of type T from the bundle. + - + - The right foot. + Asynchronously loads asset with name from the bundle. + - + - The right hand. + Asynchronously loads asset with name of a given T from the bundle. + - + - IK Hint. + Asynchronously loads asset with name of a given type from the bundle. + + - + - The left elbow IK hint. + Loads asset and sub assets with name from the bundle. + - + - The left knee IK hint. + Loads asset and sub assets with name of a given type from the bundle. + + - + - The right elbow IK hint. + Loads asset and sub assets with name of type T from the bundle. + - + - The right knee IK hint. + Loads asset with sub assets with name from the bundle asynchronously. + - + - Target. + Loads asset with sub assets with name of type T from the bundle asynchronously. + - + - The body, center of mass. + Loads asset with sub assets with name of a given type from the bundle asynchronously. + + - + - The left foot. + 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. + - + - The left hand. + 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. + - + - The right foot. + 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. + - + - The right hand. + 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. + - + - The root, the position of the game object. + 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. + - + - Behaviours are Components that can be enabled or disabled. + Unloads all assets in the bundle. + - + - Enabled Behaviours are Updated, disabled Behaviours are not. + Asynchronous create request for an AssetBundle. - + - Has the Behaviour had enabled called. + Asset object being loaded (Read Only). - + - BillboardAsset describes how a billboard is rendered. + Manifest for all the AssetBundles in the build. - + - Height of the billboard that is below ground. + Get all the AssetBundles in the manifest. + + An array of asset bundle names. + - + - Height of the billboard. + Get all the AssetBundles with variant in the manifest. + + An array of asset bundle names. + - + - Number of pre-baked images that can be switched when the billboard is viewed from different angles. + Get all the dependent AssetBundles for the given AssetBundle. + Name of the asset bundle. - + - Number of indices in the billboard mesh. The mesh is not necessarily a quad. It can be a more complex shape which fits the actual image more precisely. + Get the hash for the given AssetBundle. + Name of the asset bundle. + + The 128-bit hash for the asset bundle. + - + - The material used for rendering. + Get the direct dependent AssetBundles for the given AssetBundle. + Name of the asset bundle. + + Array of asset bundle names this asset bundle depends on. + - + - Number of vertices in the billboard mesh. The mesh is not necessarily a quad. It can be a more complex shape which fits the actual image more precisely. + Asynchronous load request from an AssetBundle. - + - Width of the billboard. + Asset objects with sub assets being loaded. (Read Only) - + - Constructs a new BillboardAsset. + Asset object being loaded (Read Only). - + - Renders a billboard. + Asynchronous operation coroutine. - + - The BillboardAsset to render. + Allow scenes to be activated as soon as it is ready. - + - Constructor. + Has the operation finished? (Read Only) - + - The BitStream class represents seralized variables, packed into a stream. + Priority lets you tweak in which order async operation calls will be performed. - + - Is the BitStream currently being read? (Read Only) + What's the operation's progress. (Read Only) - + - Is the BitStream currently being written? (Read Only) + AudioMixer asset. - + - Serializes different types of variables. + Routing target. - - - - + - Serializes different types of variables. + How time should progress for this AudioMixer. Used during Snapshot transitions. - - - - + - Serializes different types of variables. + Resets an exposed parameter to its initial value. - - - + Exposed parameter. + + Returns false if the parameter was not found or could not be set. + - + - Serializes different types of variables. + 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. + - + - Serializes different types of variables. + The name must be an exact match. - - - + Name of snapshot object to be returned. + + The snapshot identified by the name. + - + - Serializes different types of variables. + 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. + - + - Serializes different types of variables. + 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. + - + - Serializes different types of variables. + 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. - + - Serializes different types of variables. + Object representing a group in the mixer. - - - - + - Serializes different types of variables. + Object representing a snapshot in the mixer. - - - - + - Serializes different types of variables. + 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. - + - Serializes different types of variables. + The mode in which an AudioMixer should update its time. - - - - + - Blend weights. + Update the AudioMixer with scaled game time. - + - Four bones affect each vertex. + Update the AudioMixer with unscaled realtime. - + - One bone affects each vertex. + The Audio Chorus Filter takes an Audio Clip and processes it creating a chorus effect. - + - Two bones affect each vertex. + Chorus delay in ms. 0.1 to 100.0. Default = 40.0 ms. - + - Skinning bone weights of a vertex in the mesh. + Chorus modulation depth. 0.0 to 1.0. Default = 0.03. - + - Index of first bone. + Volume of original signal to pass to output. 0.0 to 1.0. Default = 0.5. - + - Index of second bone. + Chorus feedback. Controls how much of the wet signal gets fed back into the chorus buffer. 0.0 to 1.0. Default = 0.0. - + - Index of third bone. + Chorus modulation rate in hz. 0.0 to 20.0. Default = 0.8 hz. - + - Index of fourth bone. + Volume of 1st chorus tap. 0.0 to 1.0. Default = 0.5. - + - Skinning weight for first bone. + 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. - + - Skinning weight for second bone. + 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. - + - Skinning weight for third bone. + A container for audio data. - + - Skinning weight for fourth bone. + The number of channels in the audio clip. (Read Only) - + - Describes a single bounding sphere for use by a CullingGroup. + The sample frequency of the clip in Hertz. (Read Only) - + - The position of the center of the BoundingSphere. + Returns true if the AudioClip is ready to play (read-only). - + - The radius of the BoundingSphere. + The length of the audio clip in seconds. (Read Only) - + - Initializes a BoundingSphere. + 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. - 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. + Returns the current load state of the audio data associated with an AudioClip. - 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 load type of the clip (read-only). - + - The center of the bounding box. + 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 extents of the box. This is always half of the size. + The length of the audio clip in samples. (Read Only) - + - The maximal point of the box. This is always equal to center+extents. + 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. + - + - The minimal point of the box. This is always equal to center-extents. + 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. + - + - The total size of the box. This is always twice as large as the extents. + 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. + - + - The closest point on the bounding box. + Creates a user AudioClip with a name and with the given length in samples, channels and frequency. - Arbitrary point. + 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. - The point on the bounding box or inside the bounding box. + A reference to the created AudioClip. - + - Is point contained in the bounding box? + 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 new Bounds with a given center and total size. Bound extents will be half the given size. + 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. + - + - Grows the Bounds to include the point. + Fills an array with sample data from the clip. - + + - + - Grow the bounds to encapsulate the bounds. + 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. + - + - Expand the bounds by increasing its size by amount along each side. + Delegate called each time AudioClip reads data. - + Array of floats containing data read from the clip. - + - Expand the bounds by increasing its size by amount along each side. + Delegate called each time AudioClip changes read position. - + New position in the audio clip. - + - Does ray intersect this bounding box? + Set sample data in a clip. - + + - + - Does ray intersect this bounding box? + 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. + - + - Does another bounding box intersect with this bounding box? + Determines how the audio clip is loaded in. - - + - Sets the bounds to the min and max value of the box. + The audio data of the clip will be kept in memory in compressed form. - - - + - The smallest squared distance between the point and this bounding box. + The audio data is decompressed when the audio clip is loaded. - - + - Returns a nicely formatted string for the bounds. + Streams audio data from disk. - - + - Returns a nicely formatted string for the bounds. + An enum containing different compression types. - - + - A box-shaped primitive collider. + AAC Audio Compression. - + - The center of the box, measured in the object's local space. + Adaptive differential pulse-code modulation. - + - The size of the box, measured in the object's local space. + Sony proprietary hardware format. - + - Collider for 2D physics representing an axis-aligned rectangle. + Nintendo ADPCM audio compression format. - + - The center point of the collider in local space. + Sony proprietory hardware codec. - + - The width and height of the rectangle. + MPEG Audio Layer III. - + - Applies forces to simulate buoyancy, fluid-flow and fluid drag. + Uncompressed pulse-code modulation. - + - A force applied to slow angular movement of any Collider2D in contact with the effector. + Sony proprietary hardware format. - + - The density of the fluid used to calculate the buoyancy forces. + Vorbis compression format. - + - The angle of the force used to similate fluid flow. + Xbox One proprietary hardware format. - + - The magnitude of the force used to similate fluid flow. + Specifies the current properties or desired properties to be set for the audio system. - + - The random variation of the force used to similate fluid flow. + The length of the DSP buffer in samples determining the latency of sounds by the audio output device. - + - A force applied to slow linear movement of any Collider2D in contact with the effector. + The current maximum number of simultaneously audible sounds in the game. - + - Defines an arbitrary horizontal line that represents the fluid surface level. + The maximum number of managed sounds in the game. Beyond this limit sounds will simply stop playing. - + - The Caching class lets you manage cached AssetBundles, downloaded using WWW.LoadFromCacheOrDownload. + The current sample rate of the audio output device used. - + - Controls compression of cache data. Enabled by default. + The current speaker mode used by the audio output device. - + - Is Caching enabled? + Value describing the current load state of the audio data associated with an AudioClip. - + - The number of seconds that an AssetBundle may remain unused in the cache before it is automatically deleted. + Value returned by AudioClip.loadState for an AudioClip that has failed loading its audio data. - + - The total number of bytes that can potentially be allocated for caching. + Value returned by AudioClip.loadState for an AudioClip that has succeeded loading its audio data. - + - Is caching ready? + Value returned by AudioClip.loadState for an AudioClip that is currently loading audio data. - + - The number of currently unused bytes in the cache. + Value returned by AudioClip.loadState for an AudioClip that has no audio data loaded and where loading has not been initiated yet. - + - Used disk space in bytes. + The Audio Distortion Filter distorts the sound from an AudioSource or sounds reaching the AudioListener. - + - (This is a WebPlayer-only function). + Distortion value. 0.0 to 1.0. Default = 0.5. - Signature The authentification signature provided by Unity. - Size The number of bytes allocated to this cache. - - - - - - + - (This is a WebPlayer-only function). + The Audio Echo Filter repeats a sound after a given Delay, attenuating the repetitions based on the Decay Ratio. - Signature The authentification signature provided by Unity. - Size The number of bytes allocated to this cache. - - - - - - + - TODO. + Echo decay per delay. 0 to 1. 1.0 = No decay, 0.0 = total decay (i.e. simple 1 line delay). Default = 0.5. - - - - - - + - TODO. + Echo delay in ms. 10 to 5000. Default = 500. - - - - - - + - Delete all AssetBundle and Procedural Material content that has been cached by the current application. + Volume of original signal to pass to output. 0.0 to 1.0. Default = 1.0. - - True when cache cleaning succeeded, false if cache was in use. - - + - Checks if an AssetBundle is cached. + Volume of echo signal to pass to output. 0.0 to 1.0. Default = 1.0. - 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 WWW.LoadFromCacheOrDownload() 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. + The Audio High Pass Filter passes high frequencies of an AudioSource, and cuts off signals with frequencies lower than the Cutoff Frequency. - - - + - A Camera is a device through which the player views the world. + Highpass cutoff frequency in hz. 10.0 to 22000.0. Default = 5000.0. - + - The rendering path that is currently being used (Read Only). - -The actual rendering path might be different from the user-specified renderingPath if the underlying gpu/platform does not support the requested one, or some other situation caused a fallback (for example, deferred rendering is not supported with orthographic projection cameras). + Determines how much the filter's self-resonance isdampened. - + - Returns all enabled cameras in the scene. + Representation of a listener in 3D space. - + - The number of cameras in the current scene. + The paused state of the audio system. - + - The aspect ratio (width divided by height). + This lets you set whether the Audio Listener should be updated in the fixed or dynamic update. - + - The color with which the screen will be cleared. + Controls the game sound volume (0.0 to 1.0). - + - Matrix that transforms from camera space to world space (Read Only). + 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. - + - Identifies what kind of camera this is. + Deprecated Version. Returns a block of the listener (master)'s output data. + + - + - How the camera clears the background. + 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. - + - Should the camera clear the stencil buffer after the deferred light pass? + 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. - + - Number of command buffers set up on this camera (Read Only). + 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. - + - This is used to render parts of the scene selectively. + Returns or sets the current custom frequency cutoff curve. - + - The camera we are currently rendering with, for low-level render control only (Read Only). + Lowpass cutoff frequency in hz. 10.0 to 22000.0. Default = 5000.0. - + - Camera's depth in the camera rendering order. + Determines how much the filter's self-resonance is dampened. - + - How and if camera generates a depth texture. + The Audio Reverb Filter takes an Audio Clip and distorts it to create a custom reverb effect. - + - Mask to select which layers can trigger events on the camera. + Decay HF Ratio : High-frequency to low-frequency decay time ratio. Ranges from 0.1 to 2.0. Default is 0.5. - + - The far clipping plane distance. + Reverberation decay time at low-frequencies in seconds. Ranges from 0.1 to 20.0. Default is 1.0. - + - The field of view of the camera in degrees. + Reverberation density (modal density) in percent. Ranges from 0.0 to 100.0. Default is 100.0. - + - High dynamic range rendering. + Reverberation diffusion (echo density) in percent. Ranges from 0.0 to 100.0. Default is 100.0. - + - Per-layer culling distances. + Mix level of dry signal in output in mB. Ranges from -10000.0 to 0.0. Default is 0. - + - How to perform per-layer culling for a Camera. + Reference high frequency in Hz. Ranges from 20.0 to 20000.0. Default is 5000.0. - + - The first enabled camera tagged "MainCamera" (Read Only). + Reference low-frequency in Hz. Ranges from 20.0 to 1000.0. Default is 250.0. - + - The near clipping plane distance. + Late reverberation level relative to room effect in mB. Ranges from -10000.0 to 2000.0. Default is 0.0. - + - Event that is fired after any camera finishes rendering. + Early reflections level relative to room effect in mB. Ranges from -10000.0 to 1000.0. Default is -10000.0. - + - Event that is fired before any camera starts culling. + Late reverberation delay time relative to first reflection in seconds. Ranges from 0.0 to 0.1. Default is 0.04. - + - Event that is fired before any camera starts rendering. + Late reverberation level relative to room effect in mB. Ranges from -10000.0 to 2000.0. Default is 0.0. - + - Opaque object sorting mode. + Set/Get reverb preset properties. - + - Is the camera orthographic (true) or perspective (false)? + Room effect level at low frequencies in mB. Ranges from -10000.0 to 0.0. Default is 0.0. - + - Camera's half-size when in orthographic mode. + Room effect high-frequency level re. low frequency level in mB. Ranges from -10000.0 to 0.0. Default is 0.0. - + - How tall is the camera in pixels (Read Only). + Room effect low-frequency level in mB. Ranges from -10000.0 to 0.0. Default is 0.0. - + - Where on the screen is the camera rendered in pixel coordinates. + Reverb presets used by the Reverb Zone class and the audio reverb filter. - + - How wide is the camera in pixels (Read Only). + Alley preset. - + - Set a custom projection matrix. + Arena preset. - + - Where on the screen is the camera rendered in normalized coordinates. + Auditorium preset. - + - The rendering path that should be used, if possible. - -In some situations, it may not be possible to use the rendering path specified, in which case the renderer will automatically use a different path. For example, if the underlying gpu/platform does not support the requested one, or some other situation caused a fallback (for example, deferred rendering is not supported with orthographic projection cameras). - -For this reason, we also provide the read-only property actualRenderingPath which allows you to discover which path is actually being used. + Bathroom preset. - + - Distance to a point where virtual eyes converge. + Carpeted hallway preset. - + - Stereoscopic rendering. + Cave preset. - + - Render only once and use resulting image for both eyes. + City preset. - + - Distance between the virtual eyes. + Concert hall preset. - + - Set the target display for this Camera. + Dizzy preset. - + - Destination render texture. + Drugged preset. - + - Transparent object sorting mode. + Forest preset. - + - Whether or not the Camera will use occlusion culling during rendering. + Generic preset. - + - Get the world-space speed of the camera (Read Only). + Hallway preset. - + - Matrix that transforms from world to camera space. + Hangar preset. - + - Add a command buffer to be executed at a specified place. + Livingroom preset. - When to execute the command buffer during rendering. - The buffer to execute. - + - Calculates and returns oblique near-plane projection matrix. + Mountains preset. - Vector4 that describes a clip plane. - - Oblique near-plane projection matrix. - - + - Delegate type for camera callbacks. + No reverb preset selected. - - + - Makes this camera's settings match other camera. + Padded cell preset. - - + - Fills an array of Camera with the current cameras in the scene, without allocating a new array. + Parking Lot preset. - An array to be filled up with cameras currently in the scene. - + - Get command buffers to be executed at a specified place. + Plain preset. - When to execute the command buffer during rendering. - - Array of command buffers. - - + - Remove all command buffers set on this camera. + Psychotic preset. - + - Remove command buffer from execution at a specified place. + Quarry preset. - When to execute the command buffer during rendering. - The buffer to execute. - + - Remove command buffers from execution at a specified place. + Room preset. - When to execute the command buffer during rendering. - + - Render the camera manually. + Sewer pipe preset. - + - Render into a static cubemap from this camera. + Stone corridor preset. - The cube map to render to. - A bitmask which determines which of the six faces are rendered to. - - False is rendering fails, else true. - - + - Render into a cubemap from this camera. + Stoneroom preset. - A bitfield indicating which cubemap faces should be rendered into. - The texture to render to. - - False is rendering fails, else true. - - + - Render the camera with shader replacement. + Underwater presset. - - - + - Revert the aspect ratio to the screen's aspect ratio. + User defined preset. - + - Reset to the default field of view. + Reverb Zones are used when you want to create location based ambient effects in the scene. - + - Make the projection reflect normal camera's parameters. + High-frequency to mid-frequency decay time ratio. - + - Remove shader replacement from camera. + Reverberation decay time at mid frequencies. - + - Use the default projection matrix for both stereo eye. Only work in 3D flat panel display. + Value that controls the modal density in the late reverberation decay. - + - Use the default view matrix for both stereo eye. Only work in 3D flat panel display. + Value that controls the echo density in the late reverberation decay. - + - Make the rendering position reflect the camera's position in the scene. + The distance from the centerpoint that the reverb will not have any effect. Default = 15.0. - + - Returns a ray going from camera through a screen point. + The distance from the centerpoint that the reverb will have full effect at. Default = 10.0. - - + - Transforms position from screen space into viewport space. + Early reflections level relative to room effect. - - + - Transforms position from screen space into world space. + Initial reflection delay time. - - + - Make the camera render with shader replacement. + Late reverberation level relative to room effect. - - - + - Define the projection matrix for both stereo eye. Only work in 3D flat panel display. + Late reverberation delay time relative to initial reflection. - Projection matrix for the stereo left eye. - Projection matrix for the stereo left eye. - + - Define the view matrices for both stereo eye. Only work in 3D flat panel display. + Set/Get reverb preset properties. - View matrix for the stereo left eye. - View matrix for the stereo right eye. - + - Sets the Camera to render to the chosen buffers of one or more RenderTextures. + Room effect level (at mid frequencies). - 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. + Relative room effect level at high frequencies. - The RenderBuffer(s) to which color information will be rendered. - The RenderBuffer to which depth information will be rendered. - + - Returns a ray going from camera through a viewport point. + Relative room effect level at low frequencies. - - + - Transforms position from viewport space into screen space. + Like rolloffscale in global settings, but for reverb room size effect. - - + - Transforms position from viewport space into world space. + Reference high frequency (hz). - - + - Transforms position from world space into screen space. + Reference low frequency (hz). - - + - Transforms position from world space into viewport space. + Rolloff modes that a 3D sound can have in an audio source. - - + - Values for Camera.clearFlags, determining what to clear when rendering a Camera. + Use this when you want to use a custom rolloff. - + - Clear only the depth buffer. + Use this mode when you want to lower the volume of your sound over the distance. - + - Don't clear anything. + Use this mode when you want a real-world rolloff. - + - Clear with the skybox. + Controls the global audio settings from script. - + - Clear with a background color. + Returns the speaker mode capability of the current audio driver. (Read Only) - + - Describes different types of camera. + Returns the current time of the audio system. - + - Used to indicate a regular in-game camera. + Get the mixer's current output rate. - + - Used to indicate a camera that is used for rendering previews in the Editor. + Gets the current speaker mode. Default is 2 channel stereo. - + - Used to indicate that a camera is used for rendering the Scene View in the Editor. + 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. - + - Element that can be used for screen rendering. + 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. + - + - Cached calculated value based upon SortingLayerID. + Get the mixer's buffer size in samples. + Is the length of each buffer in the ringbuffer. + Is number of buffers. - + - Is this the root Canvas? + 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. - + - Allows for nested canvases to override pixelPerfect settings inherited from parent canvases. + 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. + - + - Override the sorting of canvas. + A representation of audio sources in 3D. - + - Force elements in the canvas to be aligned with pixels. Only applies with renderMode is Screen Space. + Bypass effects (Applied from filter components or global listener filters). - + - Get the render rect for the Canvas. + 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. - + - How far away from the camera is the Canvas generated. + When set doesn't route the signal from an AudioSource into the global reverb associated with reverb zones. - + - The number of pixels per unit that is considered the default. + The default AudioClip to play. - + - Is the Canvas in World or Overlay mode? + Sets the Doppler scale for this AudioSource. - + - The render order in which the canvas is being emitted to the scene. + 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. - + - Used to scale the entire canvas, while still making it fit the screen. Only applies with renderMode is Screen Space. + This makes the audio source not take into account the volume of the audio listener. - + - The normalized grid size that the canvas will split the renderable area into. + Is the clip playing right now (Read Only)? - + - Unique ID of the Canvas' sorting layer. + 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. - + - Name of the Canvas' sorting layer. + Is the audio clip looping? - + - Canvas' order within a sorting layer. + (Logarithmic rolloff) MaxDistance is the distance a sound stops attenuating at. - + - For Overlay mode, display index on which the UI canvas will appear. + Within the Min distance the AudioSource will cease to grow louder in volume. - + - Event that is called just before Canvas rendering happens. + Un- / Mutes the AudioSource. Mute sets the volume=0, Un-Mute restore the original volume. - - + - 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]. + The target group to which the AudioSource should route its signal. - + - Force all canvases to update their content. + Pan has been deprecated. Use panStereo instead. - + - Returns the default material that can be used for rendering normal elements on the Canvas. + PanLevel has been deprecated. Use spatialBlend instead. - + - Returns the default material that can be used for rendering text elements on the Canvas. + Pans a playing sound in a stereo way (left or right). This only applies to sounds that are Mono or Stereo. - + - A Canvas placable element that can be used to modify children Alpha, Raycasting, Enabled state. + The pitch of the audio source. - + - Set the alpha of the group. + If set to true, the audio source will automatically start playing on awake. - + - Does this group block raycasting (allow collision). + Sets the priority of the AudioSource. - + - Should the group ignore parent groups? + The amount by which the signal from the AudioSource will be mixed into the global reverb associated with the Reverb Zones. - + - Is the group interactable (are the elements beneath the group enabled). + Sets/Gets how the AudioSource attenuates over distance. - + - Returns true if the Group allows raycasts. + 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. - - - + - A component that will render to the screen after all normal rendering has completed when attached to a Canvas. Designed for GUI application. + Enables or disables spatialization. - + - Depth of the renderer relative to the root canvas. + Determines if the spatializer effect is inserted before or after the effect filters. - + - Indicates whether geometry emitted by this renderer is ignored. + Sets the spread angle (in degrees) of a 3d stereo or multichannel sound in speaker space. - + - True if any change has occured that would invalidate the positions of generated geometry. + Playback position in seconds. - + - Enable 'render stack' pop draw call. + Playback position in PCM samples. - + - True if rect clipping has been enabled on this renderer. -See Also: CanvasRenderer.EnableRectClipping, CanvasRenderer.DisableRectClipping. + Whether the Audio Source should be updated in the fixed or dynamic update. - + - Is the UIRenderer a mask component. + The volume of the audio source (0.0 to 1.0). - + - The number of materials usable by this renderer. + Get the current custom curve for the given AudioSourceCurveType. + The curve type to get. + + The custom AnimationCurve corresponding to the given curve type. + - + - (Editor Only) Event that gets fired whenever the data in the CanvasRenderer gets invalidated and needs to be rebuilt. + 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. - + - The number of materials usable by this renderer. Used internally for masking. + Deprecated Version. Returns a block of the currently playing source's output data. + + - + - Depth of the renderer realative to the parent canvas. + 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. + - + - Take the Vertex steam and split it corrisponding arrays (positions, colors, uv0s, uv1s, normals and tangents). + Provides a block of the currently playing audio source's spectrum data. - 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. + 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. - + - Remove all cached vertices. + 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. - + - Convert a set of vertex components into a stream of UIVertex. + Pauses playing the clip. - - - - - - - - - + - Disables rectangle clipping for this CanvasRenderer. + Plays the clip with an optional certain delay. + Delay in number of samples, assuming a 44100Hz sample rate (meaning that Play(44100) will delay the playing by exactly 1 sec). - + - Enables rect clipping on the CanvasRendered. Geometry outside of the specified rect will be clipped (not rendered). + Plays the clip with an optional certain delay. - + Delay in number of samples, assuming a 44100Hz sample rate (meaning that Play(44100) will delay the playing by exactly 1 sec). - + - Get the current alpha of the renderer. + Plays an AudioClip at a given position in world space. + Audio data to play. + Position in world space from which sound originates. + Playback volume. - + - Get the current color of the renderer. + Plays an AudioClip at a given position in world space. + Audio data to play. + Position in world space from which sound originates. + Playback volume. - + - Gets the current Material assigned to the CanvasRenderer. + 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. - The material index to retrieve (0 if this parameter is omitted). - - Result. - + Delay time specified in seconds. - + - Gets the current Material assigned to the CanvasRenderer. + Plays an AudioClip, and scales the AudioSource volume by volumeScale. - The material index to retrieve (0 if this parameter is omitted). - - Result. - + The clip being played. + The scale of the volume (0-1). - + - Gets the current Material assigned to the CanvasRenderer. Used internally for masking. + Plays an AudioClip, and scales the AudioSource volume by volumeScale. - + The clip being played. + The scale of the volume (0-1). - + - Set the alpha of the renderer. Will be multiplied with the UIVertex alpha and the Canvas alpha. + Plays the clip at a specific time on the absolute time-line that AudioSettings.dspTime reads from. - Alpha. + Time in seconds on the absolute time-line that AudioSettings.dspTime refers to for when the sound should start playing. - + - Set the color of the renderer. Will be multiplied with the UIVertex color and the Canvas color. + Set the custom curve for the given AudioSourceCurveType. - Renderer multiply color. + The curve type that should be set. + The curve that should be applied to the given curve type. - + - 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. + 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. - Material for rendering. - Material texture overide. - Material index. + Time in seconds. - + - 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. + Changes the time at which a sound that has already been scheduled to play will start. - Material for rendering. - Material texture overide. - Material index. + Time in seconds. - + - Sets the Mesh used by this renderer. + 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. + - + - Set the material for the canvas renderer. Used internally for masking. + Stops playing the clip. - - - + - Sets the texture used by this renderer's material. + Unpause the paused playback of this AudioSource. - - + - Set the vertices for the UIRenderer. + This defines the curve type of the different custom curves that can be queried and set within the AudioSource. - Array of vertices to set. - Number of vertices to set. - + - Set the vertices for the UIRenderer. + Custom Volume Rolloff. - Array of vertices to set. - Number of vertices to set. - + - Given a list of UIVertex, split the stream into it's component types. + Reverb Zone Mix. - - - - - - - - - + - A capsule-shaped primitive collider. + The Spatial Blend. - + - The center of the capsule, measured in the object's local space. + The 3D Spread. - + - The direction of the capsule. + These are speaker types defined for use with AudioSettings.speakerMode. - + - The height of the capsule meased in the object's local space. + Channel count is set to 6. 5.1 speaker setup. This includes front left, front right, center, rear left, rear right and a subwoofer. - + - The radius of the sphere, measured in the object's local space. + 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. - + - A CharacterController allows you to easily do movement constrained by collisions without having to deal with a rigidbody. + Channel count is set to 1. The speakers are monaural. - + - The center of the character's capsule relative to the transform's position. + 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. - + - What part of the capsule collided with the environment during the last CharacterController.Move call. + Channel count is set to 4. 4 speaker setup. This includes front left, front right, rear left, rear right. - + - Determines whether other rigidbodies or character controllers collide with this character controller (by default this is always enabled). + Channel count is unaffected. - + - The height of the character's capsule. + Channel count is set to 2. The speakers are stereo. This is the editor default. - + - Was the CharacterController touching the ground during the last move? + Channel count is set to 5. 5 speaker setup. This includes front left, front right, center, rear left, rear right. - + - The radius of the character's capsule. + Type of the imported(native) data. - + - The character's collision skin width. + Acc - not supported. - + - The character controllers slope limit in degrees. + Aiff. - + - The character controllers step offset in meters. + iPhone hardware decoder, supports AAC, ALAC and MP3. Extracodecdata is a pointer to an FMOD_AUDIOQUEUE_EXTRACODECDATA structure. - + - The current relative velocity of the Character (see notes). + Impulse tracker. - + - A more complex move function taking absolute movement deltas. + Protracker / Fasttracker MOD. - - + - Moves the character with speed. + MP2/MP3 MPEG. - - + - Specification for how to render a character from the font texture. See Font.characterInfo. + Ogg vorbis. - + - The horizontal distance from the origin of this character to the origin of the next character. + ScreamTracker 3. - + - The horizontal distance from the origin of this glyph to the begining of the glyph image. + 3rd party / unknown plugin format. - + - Is the character flipped? + VAG. - + - The height of the glyph image. + Microsoft WAV. - + - The width of the glyph image. + FastTracker 2 XM. - + - Unicode value of the character. + Xbox360 XMA. - + - The maximum extend of the glyph image in the x-axis. + Describes when an AudioSource or AudioListener is updated. - + - The maximum extend of the glyph image in the y-axis. + Updates the source or listener in the fixed update loop if it is attached to a Rigidbody, dynamic otherwise. - + - The minium extend of the glyph image in the x-axis. + Updates the source or listener in the dynamic update loop. - + - The minimum extend of the glyph image in the y-axis. + Updates the source or listener in the fixed update loop. - + - The size of the character or 0 if it is the default font size. + Avatar definition. - + - The style of the character. + Return true if this avatar is a valid human avatar. - + - UV coordinates for the character in the texture. + Return true if this avatar is a valid mecanim avatar. It can be a generic avatar or a human avatar. - + - The uv coordinate matching the bottom left of the glyph image in the font texture. + Class to build avatars from user scripts. - + - The uv coordinate matching the bottom right of the glyph image in the font texture. + 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. - + - The uv coordinate matching the top left of the glyph image in the font texture. + 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. + - + - The uv coordinate matching the top right of the glyph image in the font texture. + IK Goal. - + - Screen coordinates for the character in generated text meshes. + The left foot. - + - How far to advance between the beginning of this charcater and the next. + The left hand. - + - Character Joints are mainly used for Ragdoll effects. + The right foot. - + - Brings violated constraints back into alignment even when the solver fails. + The right hand. - + - The upper limit around the primary axis of the character joint. + IK Hint. - + - The lower limit around the primary axis of the character joint. + The left elbow IK hint. - + - Set the angular tolerance threshold (in degrees) for projection. + The left knee IK hint. - + - Set the linear tolerance threshold for projection. + The right elbow IK hint. - + - The angular limit of rotation (in degrees) around the primary axis of the character joint. + The right knee IK hint. - + - The angular limit of rotation (in degrees) around the primary axis of the character joint. + AvatarMask are used to mask out humanoid body parts and transforms. - + - The secondary axis around which the joint can rotate. + Number of transforms. - + - The configuration of the spring attached to the swing limits of the joint. + Adds a transform path into the AvatarMask. + The transform to add into the AvatarMask. + Whether to also add all children of the specified transform. - + - The configuration of the spring attached to the twist limits of the joint. + Creates a new AvatarMask. - + - Collider for 2D physics representing an circle. + Returns true if the humanoid body part at the given index is active. + The index of the humanoid body part. - + - The center point of the collider in local space. + Returns true if the transform at the given index is active. + The index of the transform. - + - Radius of the circle. + Returns the path of the transform at the given index. + The index of the transform. - + - The Cloth class provides an interface to cloth simulation physics. + 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. - + - Bending stiffness of the cloth. + Sets the humanoid body part at the given index to active or not. + The index of the humanoid body part. + Active or not. - + - An array of CapsuleColliders which this Cloth instance should collide with. + Sets the tranform at the given index to active or not. + The index of the transform. + Active or not. - + - The cloth skinning coefficients used to set up how the cloth interacts with the skinned mesh. + Sets the path of the transform at the given index. + The index of the transform. + The path of the transform. - + - How much to increase mass of colliding particles. + Avatar body part. - + - Damp cloth motion. + The Body. - + - Is this cloth enabled? + The Head. - + - A constant, external acceleration applied to the cloth. + Total number of body parts. - + - The friction of the cloth when colliding with the character. + The Left Arm. - + - The current normals of the cloth object. + Left Fingers. - + - A random, external acceleration applied to the cloth. + Left Foot IK. - + - Cloth's sleep threshold. + Left Hand IK. - + - Number of solver iterations per second. + The Left Leg. - + - An array of ClothSphereColliderPairs which this Cloth instance should collide with. + The Right Arm. - + - Stretching stiffness of the cloth. + Right Fingers. - + - Enable continuous collision to improve collision stability. + Right Foot IK. - + - Should gravity affect the cloth simulation? + Right Hand IK. - + - Add one virtual particle per triangle to improve collision stability. + The Right Leg. - + - The current vertex positions of the cloth object. + The Root. - + - How much world-space acceleration of the character will affect cloth vertices. + Target. - + - How much world-space movement of the character will affect cloth vertices. + The body, center of mass. - + - Clear the pending transform changes from affecting the cloth simulation. + The left foot. - + - Fade the cloth simulation in or out. + The left hand. - Fading enabled or not. - - + - 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. + The right foot. - + - Definition of a sphere a vertex is not allowed to enter. This allows collision against the animated cloth. + The right hand. - + - Distance a vertex is allowed to travel from the skinned mesh vertex position. + The root, the position of the game object. - + - A pair of SphereColliders used to define shapes for Cloth objects to collide against. + Enumeration for SystemInfo.batteryStatus which represents the current status of the device's battery. - + - The first SphereCollider of a ClothSphereColliderPair. + Device is plugged in and charging. - + - The second SphereCollider of a ClothSphereColliderPair. + Device is unplugged and discharging. - + - 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. + Device is plugged in and the battery is full. - 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. + Device is plugged in, but is not charging. - The first SphereCollider of a ClothSphereColliderPair. - The second SphereCollider of a ClothSphereColliderPair. - + - Interface for reading and writing inputs in a Unity Cluster. + The device's battery status cannot be determined. If battery status is not available on your target platform, SystemInfo.batteryStatus will return this value. - + - Add a new VRPN input entry. + Behaviours are Components that can be enabled or disabled. - 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. + Enabled Behaviours are Updated, disabled Behaviours are not. - Name of the input entry. - + - Edit an input entry which added via ClusterInput.AddInput. + Has the Behaviour had enabled called. - 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. + BillboardAsset describes how a billboard is rendered. - Name of input to poll.c. - + - Returns the binary value of a button. + Height of the billboard that is below ground. - Name of input to poll. - + - Return the position of a tracker as a Vector3. + Height of the billboard. - Name of input to poll. - + - Returns the rotation of a tracker as a Quaternion. + Number of pre-rendered images that can be switched when the billboard is viewed from different angles. - Name of input to poll. - + - Sets the axis value for this input. Only works for input typed Custom. + Number of indices in the billboard mesh. - Name of input to modify. - Value to set. - + - Sets the button value for this input. Only works for input typed Custom. + The material used for rendering. - Name of input to modify. - Value to set. - + - Sets the tracker position for this input. Only works for input typed Custom. + Number of vertices in the billboard mesh. - Name of input to modify. - Value to set. - + - Sets the tracker rotation for this input. Only works for input typed Custom. + Width of the billboard. - Name of input to modify. - Value to set. - + - Values to determine the type of input value to be expect from one entry of ClusterInput. + Constructs a new BillboardAsset. - + - Device is an analog axis that provides continuous value represented by a float. + Get the array of billboard image texture coordinate data. + The list that receives the array. - + - Device that return a binary result of pressed or not pressed. + Get the array of billboard image texture coordinate data. + The list that receives the array. - + - A user customized input. + Get the indices of the billboard mesh. + The list that receives the array. - + - Device that provide position and orientation values. + Get the indices of the billboard mesh. + The list that receives the array. - + - A helper class that contains static method to inquire status of Unity Cluster. + Get the vertices of the billboard mesh. + The list that receives the array. - + - Check whether the current instance is disconnected from the cluster network. + Get the vertices of the billboard mesh. + The list that receives the array. - + - Check whether the current instance is a master node in the cluster network. + Set the array of billboard image texture coordinate data. + The array of data to set. - + - To acquire or set the node index of the current machine from the cluster network. + Set the array of billboard image texture coordinate data. + The array of data to set. - + - A base class of all colliders. + Set the indices of the billboard mesh. + The array of data to set. - + - The rigidbody the collider is attached to. + Set the indices of the billboard mesh. + The array of data to set. - + - The world space bounding volume of the collider. + Set the vertices of the billboard mesh. + The array of data to set. - + - Contact offset value of this collider. + Set the vertices of the billboard mesh. + The array of data to set. - + - Enabled Colliders will collide with other colliders, disabled Colliders won't. + Renders a billboard from a BillboardAsset. - + - Is the collider a trigger? + The BillboardAsset to render. - + - The material used by the collider. + Constructor. - + - The shared physic material of this collider. + The BitStream class represents seralized variables, packed into a stream. - + - The closest point to the bounding box of the attached collider. + Is the BitStream currently being read? (Read Only) - - + - Casts a Ray that ignores all Colliders except this one. + Is the BitStream currently being written? (Read Only) - 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 length of the ray. - - True when the ray intersects any collider, otherwise false. - - + - Parent class for collider types used with 2D gameplay. + Serializes different types of variables. + + + - + - The Rigidbody2D attached to the Collider2D's GameObject. + Serializes different types of variables. + + + - + - The world space bounding area of the collider. + Serializes different types of variables. + + + - + - TThe density of the collider used to calculate its mass (when auto mass is enabled) + Serializes different types of variables. + + + - + - Is this collider configured as a trigger? + Serializes different types of variables. + + + - + - The local offset of the collider geometry. + Serializes different types of variables. + + + - + - The number of separate shaped regions in the collider. + Serializes different types of variables. + + + - + - The PhysicsMaterial2D that is applied to this collider. + Serializes different types of variables. + + + - + - Whether the collider is used by an attached effector or not. + Serializes different types of variables. + + + - + - Check whether this collider is touching the collider or not. + Serializes different types of variables. - The collider to check if it is touching this collider. - - Whether the collider is touching this collider or not. - + + + - + - Checks whether this collider is touching any colliders on the specified layerMask or not. + Serializes different types of variables. - Any colliders on any of these layers count as touching. - - Whether this collider is touching any collider on the specified layerMask or not. - + + + - + - Check if a collider overlaps a point in space. + Serializes different types of variables. - A point in world space. + + + - + - Describes a collision. + Blend weights. - + - The Collider we hit (Read Only). + Four bones affect each vertex. - + - The contact points generated by the physics engine. + One bone affects each vertex. - + - The GameObject whose collider we are colliding with. (Read Only). + Two bones affect each vertex. - + - The total impulse applied to this contact pair to resolve the collision. + Skinning bone weights of a vertex in the mesh. - + - The relative linear velocity of the two colliding objects (Read Only). + Index of first bone. - + - The Rigidbody we hit (Read Only). This is null if the object we hit is a collider with no rigidbody attached. + Index of second bone. - + - The Transform of the object we hit (Read Only). + Index of third bone. - + - Information returned by a collision in 2D physics. + Index of fourth bone. - + - The incoming Collider2D involved in the collision. + Skinning weight for first bone. - + - The specific points of contact with the incoming Collider2D. + Skinning weight for second bone. - + - Whether the collision was disabled or not. + Skinning weight for third bone. - + - The incoming GameObject involved in the collision. + Skinning weight for fourth bone. - + - The relative linear velocity of the two colliding objects (Read Only). + Describes a single bounding sphere for use by a CullingGroup. - + - The incoming Rigidbody2D involved in the collision. + The position of the center of the BoundingSphere. - + - The Transform of the incoming object involved in the collision. + The radius of the BoundingSphere. - + - The collision detection mode constants used for Rigidbody.collisionDetectionMode. + 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). - + - Continuous collision detection is on for colliding with static mesh geometry. + 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). - + - Continuous collision detection is on for colliding with static and dynamic geometry. + Represents an axis aligned bounding box. - + - Continuous collision detection is off for this Rigidbody. + The center of the bounding box. - + - Controls how collisions are detected when a Rigidbody2D moves. + The extents of the box. This is always half of the size. - + - Ensures that all collisions are detected when a Rigidbody2D moves. + The maximal point of the box. This is always equal to center+extents. - + - When a Rigidbody2D moves, only collisions at the new position are detected. + The minimal point of the box. This is always equal to center-extents. - + - This mode is obsolete. You should use Discrete mode. + The total size of the box. This is always twice as large as the extents. - + - CollisionFlags is a bitmask returned by CharacterController.Move. + The closest point on the bounding box. + Arbitrary point. + + The point on the bounding box or inside the bounding box. + - + - CollisionFlags is a bitmask returned by CharacterController.Move. + Is point contained in the bounding box? + - + - CollisionFlags is a bitmask returned by CharacterController.Move. + Creates a new Bounds. + The location of the origin of the Bounds. + The dimensions of the Bounds. - + - CollisionFlags is a bitmask returned by CharacterController.Move. + Grows the Bounds to include the point. + - + - CollisionFlags is a bitmask returned by CharacterController.Move. + Grow the bounds to encapsulate the bounds. + - + - Representation of RGBA colors. + Expand the bounds by increasing its size by amount along each side. + - + - Alpha component of the color. + Expand the bounds by increasing its size by amount along each side. + - + - Blue component of the color. + Does ray intersect this bounding box? + - + - Solid black. RGBA is (0, 0, 0, 1). + Does ray intersect this bounding box? + + - + - Solid blue. RGBA is (0, 0, 1, 1). + Does another bounding box intersect with this bounding box? + - + - Completely transparent. RGBA is (0, 0, 0, 0). + Sets the bounds to the min and max value of the box. + + - + - Cyan. RGBA is (0, 1, 1, 1). + The smallest squared distance between the point and this bounding box. + - + - Green component of the color. + Returns a nicely formatted string for the bounds. + - + - A version of the color that has had the gamma curve applied. + Returns a nicely formatted string for the bounds. + - + - Gray. RGBA is (0.5, 0.5, 0.5, 1). + A box-shaped primitive collider. - + - The grayscale value of the color. (Read Only) + The center of the box, measured in the object's local space. - + - Solid green. RGBA is (0, 1, 0, 1). + The size of the box, measured in the object's local space. - + - English spelling for gray. RGBA is the same (0.5, 0.5, 0.5, 1). + Collider for 2D physics representing an axis-aligned rectangle. - + - A linear value of an sRGB color. + Determines whether the BoxCollider2D's shape is automatically updated based on a SpriteRenderer's tiling properties. - + - Magenta. RGBA is (1, 0, 1, 1). + The center point of the collider in local space. - + - Returns the maximum color component value: Max(r,g,b). + Controls the radius of all edges created by the collider. - + - Red component of the color. + The width and height of the rectangle. - + - Solid red. RGBA is (1, 0, 0, 1). + Applies forces to simulate buoyancy, fluid-flow and fluid drag. - + - Solid white. RGBA is (1, 1, 1, 1). + A force applied to slow angular movement of any Collider2D in contact with the effector. - + - Yellow. RGBA is (1, 0.92, 0.016, 1), but the color is nice to look at! + The density of the fluid used to calculate the buoyancy forces. - + - Constructs a new Color with given r,g,b,a components. + The angle of the force used to similate fluid flow. - Red component. - Green component. - Blue component. - Alpha component. - + - Constructs a new Color with given r,g,b components and sets a to 1. + The magnitude of the force used to similate fluid flow. - Red component. - Green component. - Blue component. - + - Creates an RGB colour from HSV input. + The random variation of the force used to similate fluid flow. - Hue [0..1]. - Saturation [0..1]. - 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. + A force applied to slow linear movement of any Collider2D in contact with the effector. - Hue [0..1]. - Saturation [0..1]. - 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. + Defines an arbitrary horizontal line that represents the fluid surface level. - - + - Colors can be implicitly converted to and from Vector4. + The Caching class lets you manage cached AssetBundles, downloaded using WWW.LoadFromCacheOrDownload. - - + - Linearly interpolates between colors a and b by t. + Controls compression of cache data. Enabled by default. - - - - + - Linearly interpolates between colors a and b by t. + Is Caching enabled? - - - - + - Divides color a by the float b. Each color component is scaled separately. + The number of seconds that an AssetBundle may remain unused in the cache before it is automatically deleted. - - - + - Subtracts color b from color a. Each component is subtracted separately. + The total number of bytes that can potentially be allocated for caching. - - - + - Multiplies two colors together. Each component is multiplied separately. + Is caching ready? - - - - - - 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. + The number of currently unused bytes in the cache. - - - + - Calculates the hue, saturation and value of an RGB input color. + Used disk space in bytes. - 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. + This is a WebPlayer-only function. + Signature The authentification signature provided by Unity. + Size The number of bytes allocated to this cache. + + + + + - + - Returns a nicely formatted string of this color. + This is a WebPlayer-only function. - + Signature The authentification signature provided by Unity. + Size The number of bytes allocated to this cache. + + + + + - + - Returns a nicely formatted string of this color. + TODO. - + + + + + - + - Representation of RGBA colors in 32 bit format. + TODO. + + + + + - + - Alpha component of the color. + Delete all AssetBundle and Procedural Material content that has been cached by the current application. + + True when cache cleaning succeeded, false if cache was in use. + - + - Blue component of the color. + 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 WWW.LoadFromCacheOrDownload() 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. + - + - Green component of the color. + Bumps the timestamp of a cached file to be the current time. + + - + - Red component of the color. + A Camera is a device through which the player views the world. - + - Constructs a new Color with given r, g, b, a components. + Gets or sets the temporary RenderTexture target for this Camera. - - - - - + - Color32 can be implicitly converted to and from Color. + The rendering path that is currently being used (Read Only). - - + - Color32 can be implicitly converted to and from Color. + Returns all enabled cameras in the scene. - - + - Linearly interpolates between colors a and b by t. + The number of cameras in the current scene. - - - - + - Linearly interpolates between colors a and b by t. + High dynamic range rendering. - - - - + - Returns a nicely formatted string of this color. + MSAA rendering. - - + - Returns a nicely formatted string of this color. + The aspect ratio (width divided by height). - - + - Color space for player settings. + The color with which the screen will be cleared. - + - Gamma color space. + Matrix that transforms from camera space to world space (Read Only). - + - Linear color space. + Identifies what kind of camera this is. - + - Uninitialized color space. + How the camera clears the background. - + - Attribute used to configure the usage of the ColorField and Color Picker for a color. + Should the camera clear the stencil buffer after the deferred light pass? - + - If set to true the Color is treated as a HDR color. + Number of command buffers set up on this camera (Read Only). - + - Maximum allowed HDR color component value when using the HDR Color Picker. + This is used to render parts of the scene selectively. - + - Maximum exposure value allowed in the HDR Color Picker. + Sets a custom matrix for the camera to use for all culling queries. - + - Minimum allowed HDR color component value when using the Color Picker. + The camera we are currently rendering with, for low-level render control only (Read Only). - + - Minimum exposure value allowed in the HDR Color Picker. + Camera's depth in the camera rendering order. - + - If false then the alpha bar is hidden in the ColorField and the alpha value is not shown in the Color Picker. + How and if camera generates a depth texture. - + - Attribute for Color fields. Used for configuring the GUI for the color. + Mask to select which layers can trigger events on the camera. - 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. + The far clipping plane distance. - 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. + The field of view of the camera in degrees. - + - Returns the color as a hexadecimal string in the format "RRGGBB". + Should camera rendering be forced into a RenderTexture. - The color to be converted. - - Hexadecimal string representing the color. - - + - Returns the color as a hexadecimal string in the format "RRGGBBAA". + High dynamic range rendering. - The color to be converted. - - Hexadecimal string representing the color. - - + - Attempts to convert a html color string. + Per-layer culling distances. - 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. + How to perform per-layer culling for a Camera. - + - Mesh to combine. + The first enabled camera tagged "MainCamera" (Read Only). - + - Submesh index of the mesh. + The near clipping plane distance. - + - Matrix to transform the mesh with before combining. + Get or set the raw projection matrix with no camera offset (no jittering). - + - Interface into compass functionality. + Event that is fired after any camera finishes rendering. - + - 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(). + Event that is fired before any camera starts culling. - + - Accuracy of heading reading in degrees. + Event that is fired before any camera starts rendering. - + - The heading in degrees relative to the magnetic North Pole. (Read Only) + Opaque object sorting mode. - + - The raw geomagnetic data measured in microteslas. (Read Only) + Is the camera orthographic (true) or perspective (false)? - + - Timestamp (in seconds since 1970) when the heading was last time updated. (Read Only) + Camera's half-size when in orthographic mode. - + - The heading in degrees relative to the geographic North Pole. (Read Only) + How tall is the camera in pixels (Read Only). - + - Base class for everything attached to GameObjects. + Where on the screen is the camera rendered in pixel coordinates. - + - The Animation attached to this GameObject (null if there is none attached). + How wide is the camera in pixels (Read Only). - + - The AudioSource attached to this GameObject (null if there is none attached). + Set a custom projection matrix. - + - The Camera attached to this GameObject (null if there is none attached). + Where on the screen is the camera rendered in normalized coordinates. - + - The Collider attached to this GameObject (null if there is none attached). + The rendering path that should be used, if possible. - + - The Collider2D component attached to the object. + 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. - + - The ConstantForce attached to this GameObject (null if there is none attached). + Distance to a point where virtual eyes converge. - + - The game object this component is attached to. A component is always attached to a game object. + Stereoscopic rendering. - + - The GUIText attached to this GameObject (null if there is none attached). + Render only once and use resulting image for both eyes. - + - The GUITexture attached to this GameObject (Read Only). (null if there is none attached). + Distance between the virtual eyes. - + - The HingeJoint attached to this GameObject (null if there is none attached). + Defines which eye of a VR display the Camera renders into. - + - The Light attached to this GameObject (null if there is none attached). + Set the target display for this Camera. - + - The NetworkView attached to this GameObject (Read Only). (null if there is none attached). + Destination render texture. - + - The ParticleEmitter attached to this GameObject (null if there is none attached). + An axis that describes the direction along which the distances of objects are measured for the purpose of sorting. - + - The ParticleSystem attached to this GameObject (null if there is none attached). + Transparent object sorting mode. - + - The Renderer attached to this GameObject (null if there is none attached). + Should the jittered matrix be used for transparency rendering? - + - The Rigidbody attached to this GameObject (null if there is none attached). + Whether or not the Camera will use occlusion culling during rendering. - + - The Rigidbody2D that is attached to the Component's GameObject. + Get the world-space speed of the camera (Read Only). - + - The tag of this game object. + Matrix that transforms from world to camera space. - + - The Transform attached to this GameObject (null if there is none attached). + Add a command buffer to be executed at a specified place. + When to execute the command buffer during rendering. + The buffer to execute. - + - Calls the method named methodName on every MonoBehaviour in this game object or any of its children. + Given viewport coordinates, calculates the view space vectors pointing to the four frustum corners at the specified camera depth. - 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? + 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. - + - Calls the method named methodName on every MonoBehaviour in this game object or any of its children. + Calculates and returns oblique near-plane projection matrix. - 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? + Vector4 that describes a clip plane. + + Oblique near-plane projection matrix. + - + - Calls the method named methodName on every MonoBehaviour in this game object or any of its children. + Delegate type for camera callbacks. - 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. + Makes this camera's settings match other camera. - 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 ? + Fills an array of Camera with the current cameras in the scene, without allocating a new array. - The tag to compare. + An array to be filled up with cameras currently in the scene. - + - Returns the component of Type type if the game object has one attached, null if it doesn't. + Get command buffers to be executed at a specified place. - The type of Component to retrieve. + When to execute the command buffer during rendering. + + Array of command buffers. + - + - Generic version. See the page for more details. + Gets the projection matrix of a specific left or right stereoscopic eye. + Specifies the stereoscopic eye whose view matrix needs to be returned. + + The view matrix of the specified stereoscopic eye. + - + - Returns the component with name type if the game object has one attached, null if it doesn't. + 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. + - + - Returns the component of Type type in the GameObject or any of its children using depth first search. + 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. - The type of Component to retrieve. - - A component of the matching type, if found. - - + - Generic version. See the page for more details. + Camera eye corresponding to stereoscopic rendering of the left eye. - - - A component of the matching type, if found. - - + - Returns the component of Type type in the GameObject or any of its parents. + Camera eye corresponding to non-stereoscopic rendering. - The type of Component to retrieve. - - A component of the matching type, if found. - - + - Generic version. See the page for more details. + Camera eye corresponding to stereoscopic rendering of the right eye. - - A component of the matching type, if found. - - + - Returns all components of Type type in the GameObject. + Remove all command buffers set on this camera. - The type of Component to retrieve. - + - Generic version. See the page for more details. + Remove command buffer from execution at a specified place. + When to execute the command buffer during rendering. + The buffer to execute. - + - Returns all components of Type type in the GameObject or any of its children. + Remove command buffers from execution at a specified place. - The type of Component to retrieve. - Should Components on inactive GameObjects be included in the found set? + When to execute the command buffer during rendering. - + - Returns all components of Type type in the GameObject or any of its children. + Render the camera manually. - 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. + Render into a static cubemap from this camera. - Should inactive GameObjects be included in the found set? + The cube map to render to. + A bitmask which determines which of the six faces are rendered to. - A list of all found components matching the specified type. + False is rendering fails, else true. - + - Generic version. See the page for more details. + Render into a cubemap from this camera. + A bitfield indicating which cubemap faces should be rendered into. + The texture to render to. - A list of all found components matching the specified type. + False is rendering fails, else true. - + - Returns all components of Type type in the GameObject or any of its parents. + Render the camera with shader replacement. - The type of Component to retrieve. - Should inactive Components be included in the found set? + + - + - Generic version. See the page for more details. + Revert the aspect ratio to the screen's aspect ratio. - Should inactive Components be included in the found set? - + - Generic version. See the page for more details. + Make culling queries reflect the camera's built in parameters. - Should inactive Components be included in the found set? - + - Calls the method named methodName on every MonoBehaviour in this game object. + Reset to the default field of view. - 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. + Make the projection reflect normal camera's parameters. - 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. + Remove shader replacement from camera. - 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. + Reset the camera to using the Unity computed projection matrices for all stereoscopic eyes. - 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. + Reset the camera to using the Unity computed view matrices for all stereoscopic eyes. - 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. + Resets this Camera's transparency sort settings to the default. Default transparency settings are taken from GraphicsSettings instead of directly from this Camera. - 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. + Make the rendering position reflect the camera's position in the scene. - 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. + Returns a ray going from camera through a screen point. - 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? + - + - Data buffer to hold data for compute shaders. + Transforms position from screen space into viewport space. + - + - Number of elements in the buffer (Read Only). + Transforms position from screen space into world space. + - + - Size of one element in the buffer (Read Only). + Make the camera render with shader replacement. + + - + - Copy counter value of append/consume buffer into another buffer. + Sets custom projection matrices for both the left and right stereoscopic eyes. - Append/consume buffer to copy the counter from. - A buffer to copy the counter to. - Target byte offset in dst. + Projection matrix for the stereoscopic left eye. + Projection matrix for the stereoscopic right eye. - + - Create a Compute Buffer. + Sets a custom projection matrix for a specific stereoscopic eye. - 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. + Specifies the stereoscopic eye whose projection matrix needs to be set. + The matrix to be set. - + - Create a Compute Buffer. + Set custom view matrices for both eyes. - 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. + View matrix for the stereo left eye. + View matrix for the stereo right eye. - + - Read data values from the buffer into an array. + Sets a custom view matrix for a specific stereoscopic eye. - An array to receive the data. + Specifies the stereoscopic view matrix to set. + The matrix to be set. - + - Release a Compute Buffer. + 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. - + - Set the buffer with values from an array. + Sets the Camera to render to the chosen buffers of one or more RenderTextures. - Array of values to fill the buffer. + The RenderBuffer(s) to which color information will be rendered. + The RenderBuffer to which depth information will be rendered. - + - ComputeBuffer type. + Enum used to specify either the left or the right eye of a stereoscopic camera. - + - Append-consume ComputeBuffer type. + Specifies the target to be the left eye. - + - ComputeBuffer with a counter. + Specifies the target to be the right eye. - + - Default ComputeBuffer type. + Returns a ray going from camera through a viewport point. + - + - ComputeBuffer used for Graphics.DrawProceduralIndirect. + Transforms position from viewport space into screen space. + - + - ComputeBuffer is attempted to be located in GPU memory. + Transforms position from viewport space into world space. + The 3d vector in Viewport space. + + The 3d vector in World space. + - + - Raw ComputeBuffer type. + Transforms position from world space into screen space. + - + - Compute Shader asset. + Transforms position from world space into viewport space. + - + - Execute a compute shader. + Values for Camera.clearFlags, determining what to clear when rendering a Camera. - 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. - + - Find ComputeShader kernel index. + Clear only the depth buffer. - Name of kernel function. - - Kernel index, or -1 if not found. - - + - Sets an input or output compute buffer. + Don't clear anything. - For which kernel the buffer is being set. See FindKernel. - Name of the buffer variable in shader code. - Buffer to set. - + - Set a float parameter. + Clear with the skybox. - Variable name in shader code. - Value to set. - + - Set multiple consecutive float parameters at once. + Clear with a background color. - Array variable name in the shader code. - Value array to set. - + - Set an integer parameter. + Describes different types of camera. - Variable name in shader code. - Value to set. - + - Set multiple consecutive integer parameters at once. + Used to indicate a regular in-game camera. - Array variable name in the shader code. - Value array to set. - + - Set a texture parameter. + Used to indicate a camera that is used for rendering previews in the Editor. - For which kernel the texture is being set. See FindKernel. - Name of the buffer variable in shader code. - Texture to set. - + - Set a vector parameter. + Used to indicate that a camera is used for rendering the Scene View in the Editor. - Variable name in shader code. - Value to set. - + - The configurable joint is an extremely flexible joint giving you complete control over rotation and linear motion. + Used to indicate that a camera is used for rendering VR (in edit mode) in the Editor. - + - Definition of how the joint's rotation will behave around its local X axis. Only used if Rotation Drive Mode is Swing & Twist. + Element that can be used for screen rendering. - + - The configuration of the spring attached to the angular X limit of the joint. + Get or set the mask of additional shader channels to be used when creating the Canvas mesh. - + - Allow rotation around the X axis to be Free, completely Locked, or Limited according to Low and High Angular XLimit. + Cached calculated value based upon SortingLayerID. - + - Boundary defining rotation restriction, based on delta from original rotation. + Is this the root Canvas? - + - Allow rotation around the Y axis to be Free, completely Locked, or Limited according to Angular YLimit. + The normalized grid size that the canvas will split the renderable area into. - + - 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. + Allows for nested canvases to override pixelPerfect settings inherited from parent canvases. - + - The configuration of the spring attached to the angular Y and angular Z limits of the joint. + Override the sorting of canvas. - + - Boundary defining rotation restriction, based on delta from original rotation. + Force elements in the canvas to be aligned with pixels. Only applies with renderMode is Screen Space. - + - Allow rotation around the Z axis to be Free, completely Locked, or Limited according to Angular ZLimit. + Get the render rect for the Canvas. - + - If enabled, all Target values will be calculated in world space instead of the object's local space. + How far away from the camera is the Canvas generated. - + - Boundary defining upper rotation restriction, based on delta from original rotation. + The number of pixels per unit that is considered the default. - + - Boundary defining movement restriction, based on distance from the joint's origin. + Is the Canvas in World or Overlay mode? - + - The configuration of the spring attached to the linear limit of the joint. + The render order in which the canvas is being emitted to the scene. - + - Boundary defining lower rotation restriction, based on delta from original rotation. + 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. - + - 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). + Used to scale the entire canvas, while still making it fit the screen. Only applies with renderMode is Screen Space. - + - 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). + The normalized grid size that the canvas will split the renderable area into. - + - 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. + Unique ID of the Canvas' sorting layer. - + - Control the object's rotation with either X & YZ or Slerp Drive by itself. + Name of the Canvas' sorting layer. - + - The joint's secondary axis. + Canvas' order within a sorting layer. - + - Definition of how the joint's rotation will behave around all local axes. Only used if Rotation Drive Mode is Slerp Only. + For Overlay mode, display index on which the UI canvas will appear. - + - If enabled, the two connected rigidbodies will be swapped, as if the joint was attached to the other body. + Event that is called just before Canvas rendering happens. + - + - This is a Vector3. It defines the desired angular velocity that the joint should rotate into. + 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]. - + - The desired position that the joint should move into. + Force all canvases to update their content. - + - This is a Quaternion. It defines the desired rotation that the joint should rotate into. + Returns the default material that can be used for rendering normal elements on the Canvas. - + - The desired velocity that the joint should move along. + Returns the default material that can be used for rendering text elements on the Canvas. - + - Definition of how the joint's movement will behave along its local X axis. + Gets or generates the ETC1 Material. + + The generated ETC1 Material from the Canvas. + - + - Allow movement along the X axis to be Free, completely Locked, or Limited according to Linear Limit. + A Canvas placable element that can be used to modify children Alpha, Raycasting, Enabled state. - + - Definition of how the joint's movement will behave along its local Y axis. + Set the alpha of the group. - + - Allow movement along the Y axis to be Free, completely Locked, or Limited according to Linear Limit. + Does this group block raycasting (allow collision). - + - Definition of how the joint's movement will behave along its local Z axis. + Should the group ignore parent groups? - + - Allow movement along the Z axis to be Free, completely Locked, or Limited according to Linear Limit. + Is the group interactable (are the elements beneath the group enabled). - + - Constrains movement for a ConfigurableJoint along the 6 axes. + Returns true if the Group allows raycasts. + + - + - Motion along the axis will be completely free and completely unconstrained. + A component that will render to the screen after all normal rendering has completed when attached to a Canvas. Designed for GUI application. - + - Motion along the axis will be limited by the respective limit. + Depth of the renderer relative to the root canvas. - + - Motion along the axis will be locked. + Indicates whether geometry emitted by this renderer is ignored. - + - The various test results the connection tester may return with. + True if any change has occured that would invalidate the positions of generated geometry. - + - Some unknown error occurred. + Enable 'render stack' pop draw call. - + - Port-restricted NAT type, can do NAT punchthrough to everyone except symmetric. + True if rect clipping has been enabled on this renderer. +See Also: CanvasRenderer.EnableRectClipping, CanvasRenderer.DisableRectClipping. - + - Symmetric NAT type, cannot do NAT punchthrough to other symmetric types nor port restricted type. + Is the UIRenderer a mask component. - + - Address-restricted cone type, NAT punchthrough fully supported. + The number of materials usable by this renderer. - + - Full cone type, NAT punchthrough fully supported. + (Editor Only) Event that gets fired whenever the data in the CanvasRenderer gets invalidated and needs to be rebuilt. + - + - Public IP address detected and game listen port is accessible to the internet. + The number of materials usable by this renderer. Used internally for masking. - + - Public IP address detected but server is not initialized and no port is listening. + Depth of the renderer realative to the parent canvas. - + - Public IP address detected but the port is not connectable from the internet. + 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. - + - Test result undetermined, still in progress. + Remove all cached vertices. - + - A force applied constantly. + Convert a set of vertex components into a stream of UIVertex. + + + + + + + + - + - The force applied to the rigidbody every frame. + Disables rectangle clipping for this CanvasRenderer. - + - The force - relative to the rigid bodies coordinate system - applied every frame. + Enables rect clipping on the CanvasRendered. Geometry outside of the specified rect will be clipped (not rendered). + - + - The torque - relative to the rigid bodies coordinate system - applied every frame. + Get the current alpha of the renderer. - + - The torque applied to the rigidbody every frame. + Get the current color of the renderer. - + - Applies both linear and angular (torque) forces continuously to the rigidbody each physics update. + Gets the current Material assigned to the CanvasRenderer. + The material index to retrieve (0 if this parameter is omitted). + + Result. + - + - The linear force applied to the rigidbody each physics update. + Gets the current Material assigned to the CanvasRenderer. + The material index to retrieve (0 if this parameter is omitted). + + Result. + - + - The linear force, relative to the rigid-body coordinate system, applied each physics update. + Gets the current Material assigned to the CanvasRenderer. Used internally for masking. + - + - The torque applied to the rigidbody each physics update. + Set the alpha of the renderer. Will be multiplied with the UIVertex alpha and the Canvas alpha. + Alpha. - + - Describes a contact point where the collision occurs. + The Alpha Texture that will be passed to the Shader under the _AlphaTex property. + The Texture to be passed. - + - Normal of the contact point. + Set the color of the renderer. Will be multiplied with the UIVertex color and the Canvas color. + Renderer multiply color. - + - The other collider in contact at the point. + 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. - + - The point of contact. + 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. - + - The first collider in contact at the point. + Sets the Mesh used by this renderer. + - + - Details about a specific point of contact involved in a 2D physics collision. + Set the material for the canvas renderer. Used internally for masking. + + - + - The collider attached to the object receiving the collision message. + Sets the texture used by this renderer's material. + - + - Surface normal at the contact point. + Set the vertices for the UIRenderer. + Array of vertices to set. + Number of vertices to set. - + - The incoming collider involved in the collision at this contact point. + Set the vertices for the UIRenderer. + Array of vertices to set. + Number of vertices to set. - + - The point of contact between the two colliders in world space. + Given a list of UIVertex, split the stream into it's component types. + + + + + + + + - + - The ContextMenu attribute allows you to add commands to the context menu. + A capsule-shaped primitive collider. - + - Adds the function to the context menu of the component. + The center of the capsule, measured in the object's local space. - - + - Use this attribute to add a context menu to a field that calls a named method. + The direction of the capsule. - + - The name of the function that should be called. + The height of the capsule meased in the object's local space. - + - The name of the context menu item. + The radius of the sphere, measured in the object's local space. - + - Use this attribute to add a context menu to a field that calls a named method. + A capsule-shaped primitive collider. - 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 direction that the capsule sides can extend. - + - The collider that was hit by the controller. + The width and height of the capsule area. - + - The controller that hit the collider. + The direction that the capsule sides can extend. - + - The game object that was hit by the controller. + The capsule sides extend horizontally. - + - The direction the CharacterController was moving in when the collision occured. + The capsule sides extend vertically. - + - How far the character has travelled until it hit the collider. + A CharacterController allows you to easily do movement constrained by collisions without having to deal with a rigidbody. - + - The normal of the surface we collided with in world space. + The center of the character's capsule relative to the transform's position. - + - The impact point in world space. + What part of the capsule collided with the environment during the last CharacterController.Move call. - + - The rigidbody that was hit by the controller. + Determines whether other rigidbodies or character controllers collide with this character controller (by default this is always enabled). - + - The transform that was hit by the controller. + Enables or disables overlap recovery. + Enables or disables overlap recovery. Used to depenetrate character controllers from static objects when an overlap is detected. - + - 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. + The height of the character's capsule. - + - Holds data for a single application crash event and provides access to all gathered crash reports. + Was the CharacterController touching the ground during the last move? - + - Returns last crash report, or null if no reports are available. + Gets or sets the minimum move distance of the character controller. - + - Returns all currently available reports in a new array. + The radius of the character's capsule. - + - Crash report data as formatted text. + The character's collision skin width. - + - Time, when the crash occured. + The character controllers slope limit in degrees. - + - Remove report from available reports list. + The character controllers step offset in meters. - + - Remove all reports from available reports list. + The current relative velocity of the Character (see notes). - + - 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. + A more complex move function taking absolute movement deltas. + - + - The default file name used by newly created instances of this type. + Moves the character with speed. + - + - The display name for this type shown in the Assets/Create menu. + Specification for how to render a character from the font texture. See Font.characterInfo. - + - The position of the menu item within the Assets/Create menu. + The horizontal distance from the origin of this character to the origin of the next character. - + - Class for handling cube maps, Use this to create or modify existing. + The horizontal distance from the origin of this glyph to the begining of the glyph image. - + - The format of the pixel data in the texture (Read Only). + Is the character flipped? - + - How many mipmap levels are in this texture (Read Only). + The height of the glyph image. - + - Actually apply all previous SetPixel and SetPixels changes. + The width of the glyph image. - Should all mipmap levels be updated? - Should the Cubemap texture data be readable/modifiable after changes are applied? - + - Create a new empty cubemap texture. + Unicode value of the character. - 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). + The maximum extend of the glyph image in the x-axis. - - - - + - Returns pixel colors of a cubemap face. + The maximum extend of the glyph image in the y-axis. - The face from which pixel data is taken. - Mipmap level for the chosen face. - + - Sets pixel color at coordinates (face, x, y). + The minium extend of the glyph image in the x-axis. - - - - - + - Sets pixel colors of a cubemap face. + The minimum extend of the glyph image in the y-axis. - 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. + The size of the character or 0 if it is the default font size. - Pixel distance at edges over which to apply smoothing. - + - Cubemap face. + The style of the character. - + - Left facing side (-x). + UV coordinates for the character in the texture. - + - Downward facing side (-y). + The uv coordinate matching the bottom left of the glyph image in the font texture. - + - Backward facing side (-z). + The uv coordinate matching the bottom right of the glyph image in the font texture. - + - Right facing side (+x). + The uv coordinate matching the top left of the glyph image in the font texture. - + - Upwards facing side (+y). + The uv coordinate matching the top right of the glyph image in the font texture. - + - Forward facing side (+z). + Screen coordinates for the character in generated text meshes. - + - Cubemap face is unknown or unspecified. + How far to advance between the beginning of this charcater and the next. - + - Describes a set of bounding spheres that should have their visibility and distances maintained. + Character Joints are mainly used for Ragdoll effects. - + - Pauses culling group execution. + Brings violated constraints back into alignment even when the solver fails. - + - Sets the callback that will be called when a sphere's visibility and/or distance state has changed. + The upper limit around the primary axis of the character joint. - + - Locks the CullingGroup to a specific camera. + The lower limit around the primary axis of the character joint. - + - Create a CullingGroup. + Set the angular tolerance threshold (in degrees) for projection. - + - Clean up all memory used by the CullingGroup immediately. + Set the linear tolerance threshold for projection. - + - Erase a given bounding sphere by moving the final sphere on top of it. + The angular limit of rotation (in degrees) around the primary axis of the character joint. - 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 angular limit of rotation (in degrees) around the primary axis of the character joint. - 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 secondary axis around which the joint can rotate. - 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 configuration of the spring attached to the swing limits of the joint. - 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. + The configuration of the spring attached to the twist limits of the joint. - 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. + Collider for 2D physics representing an circle. - 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. + The center point of the collider in local space. - 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. + Radius of the circle. - 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. - + - 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. + The Cloth class provides an interface to cloth simulation physics. - 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. + Bending stiffness of the cloth. - The number of bounding spheres being used. - + - Sets the array of bounding sphere definitions that the CullingGroup should compute culling for. + An array of CapsuleColliders which this Cloth instance should collide with. - The BoundingSpheres to cull. - + - Set the reference point from which distance bands are measured. + The cloth skinning coefficients used to set up how the cloth interacts with the skinned mesh. - 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. + How much to increase mass of colliding particles. - 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. + Damp cloth motion. - 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. + Is this cloth enabled? - + - The current distance band index of the sphere, after the most recent culling pass. + A constant, external acceleration applied to the cloth. - + - Did this sphere change from being visible to being invisible in the most recent culling pass? + The friction of the cloth when colliding with the character. - + - Did this sphere change from being invisible to being visible in the most recent culling pass? + The current normals of the cloth object. - + - The index of the sphere that has changed. + A random, external acceleration applied to the cloth. - + - Was the sphere considered visible by the most recent culling pass? + Cloth's sleep threshold. - + - The distance band index of the sphere before the most recent culling pass. + An array of ClothSphereColliderPairs which this Cloth instance should collide with. - + - Was the sphere visible before the most recent culling pass? + Stretching stiffness of the cloth. - + - Cursor API for setting the cursor that is used for rendering. + Should gravity affect the cloth simulation? - + - How should the cursor be handled? + Add one virtual particle per triangle to improve collision stability. - + - Should the cursor be visible? + The current vertex positions of the cloth object. - + - Change the mouse cursor to the set texture OnMouseEnter. + How much world-space acceleration of the character will affect cloth vertices. - + - Specify a custom cursor that you wish to use as a cursor. + How much world-space movement of the character will affect cloth vertices. - The texture to use for the cursor or null to set the default cursor. Note that a texture needs to be imported with "Read/Write enabled" in the texture importer (or using the "Cursor" defaults), in order to be used as a cursor. - 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. + Clear the pending transform changes from affecting the cloth simulation. - + - Confine cursor to the game window. + Fade the cloth simulation in or out. + Fading enabled or not. + - + - Lock cursor to the center of the game window. + 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. - + - Cursor behavior is unmodified. + Definition of a sphere a vertex is not allowed to enter. This allows collision against the animated cloth. - + - How should the custom cursor be rendered. + Distance a vertex is allowed to travel from the skinned mesh vertex position. - + - Use hardware cursors on supported platforms. + A pair of SphereColliders used to define shapes for Cloth objects to collide against. - + - Force the use of software cursors. + The first SphereCollider of a ClothSphereColliderPair. - + - Base class for custom yield instructions to suspend coroutines. + The second SphereCollider of a ClothSphereColliderPair. - + - Indicates if coroutine should be kept suspended. + 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. - + - Class containing methods to ease debugging while developing a game. + 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. - + - Opens or closes developer console. + Interface for reading and writing inputs in a Unity Cluster. - + - In the Build Settings dialog there is a check box called "Development Build". + 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. + - + - Get default debug logger. + Check the connection status of the device to the VRPN server it connected to. + Name of the input entry. - + - Assert a condition and logs a formatted error message to the Unity console on failure. + Edit an input entry which added via ClusterInput.AddInput. - Condition you expect to be true. - Object to which the message applies. - String or object to be converted to string representation for display. + 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. - + - Assert a condition and logs a formatted error message to the Unity console on failure. + Returns the axis value as a continous float. - Condition you expect to be true. - Object to which the message applies. - String or object to be converted to string representation for display. + Name of input to poll.c. - + - Assert a condition and logs a formatted error message to the Unity console on failure. + Returns the binary value of a button. - Condition you expect to be true. - Object to which the message applies. - String or object to be converted to string representation for display. + Name of input to poll. - + - Assert a condition and logs a formatted error message to the Unity console on failure. + Return the position of a tracker as a Vector3. - Condition you expect to be true. - Object to which the message applies. - String or object to be converted to string representation for display. + Name of input to poll. - + - Assert a condition and logs a formatted error message to the Unity console on failure. + Returns the rotation of a tracker as a Quaternion. - Condition you expect to be true. - A composite format string. - Format arguments. - Object to which the message applies. + Name of input to poll. - + - Assert a condition and logs a formatted error message to the Unity console on failure. + Sets the axis value for this input. Only works for input typed Custom. - Condition you expect to be true. - A composite format string. - Format arguments. - Object to which the message applies. + Name of input to modify. + Value to set. - + - Pauses the editor. + Sets the button value for this input. Only works for input typed Custom. + Name of input to modify. + Value to set. - + - Clears errors from the developer console. + Sets the tracker position for this input. Only works for input typed Custom. + Name of input to modify. + Value to set. - + - Draws a line between specified start and end points. + Sets the tracker rotation for this input. Only works for input typed Custom. - 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? + Name of input to modify. + Value to set. - + - Draws a line between specified start and end points. + Values to determine the type of input value to be expect from one entry of ClusterInput. - 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. + Device is an analog axis that provides continuous value represented by a float. - 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. + Device that return a binary result of pressed or not pressed. - 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. + A user customized input. - 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. + Device that provide position and orientation values. - 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. + A helper class that contains static method to inquire status of Unity Cluster. - 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. + Check whether the current instance is disconnected from the cluster network. - 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. + Check whether the current instance is a master node in the cluster network. - String or object to be converted to string representation for display. - Object to which the message applies. - + - Logs message to the Unity Console. + To acquire or set the node index of the current machine from the cluster network. - 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. + A base class of all colliders. - 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. + The rigidbody the collider is attached to. - 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. + The world space bounding volume of the collider. - A composite format string. - Format arguments. - Object to which the message applies. - + - Logs a formatted assertion message to the Unity console. + Contact offset value of this collider. - 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. + Enabled Colliders will collide with other colliders, disabled Colliders won't. - 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. + Is the collider a trigger? - 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. + The material used by the collider. - A composite format string. - Format arguments. - Object to which the message applies. - + - Logs a formatted error message to the Unity console. + The shared physic material of this collider. - 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. + Returns a point on the collider that is closest to a given location. - Object to which the message applies. - Runtime Exception. + Location you want to find the closest point to. + + The point on the collider that is closest to the specified location. + - + - A variant of Debug.Log that logs an error message to the console. + The closest point to the bounding box of the attached collider. - Object to which the message applies. - Runtime Exception. + - + - Logs a formatted message to the Unity Console. + Casts a Ray that ignores all Colliders except this one. - A composite format string. - Format arguments. - Object to which the message applies. + 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 length of the ray. + + True when the ray intersects any collider, otherwise false. + - + - Logs a formatted message to the Unity Console. + Parent class for collider types used with 2D gameplay. - 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. + The Rigidbody2D attached to the Collider2D's GameObject. - 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. + Get the bounciness used by the collider. - 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. + The world space bounding area of the collider. - A composite format string. - Format arguments. - Object to which the message applies. - + - Logs a formatted warning message to the Unity Console. + Get the CompositeCollider2D that is available to be attached to the collider. - 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. + The density of the collider used to calculate its mass (when auto mass is enabled). - + - Attribute used to make a float, int, or string variable in a script be delayed. + Get the friction used by the collider. - + - Depth texture generation mode for Camera. + Is this collider configured as a trigger? - + - Generate a depth texture. + The local offset of the collider geometry. - + - Generate a depth + normals texture. + The number of separate shaped regions in the collider. - + - Do not generate depth texture (Default). + The PhysicsMaterial2D that is applied to this collider. - + - Detail prototype used by the Terrain GameObject. + Sets whether the Collider will be used or not used by a CompositeCollider2D. - + - Bend factor of the detailPrototype. + Whether the collider is used by an attached effector or not. - + - Color when the DetailPrototypes are "dry". + 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. + - + - Color when the DetailPrototypes are "healthy". + 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. + - + - Maximum height of the grass billboards (if render mode is GrassBillboard). + 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. + - + - Maximum width of the grass billboards (if render mode is GrassBillboard). + 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. + - + - Minimum height of the grass billboards (if render mode is GrassBillboard). + 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. + - + - Minimum width of the grass billboards (if render mode is GrassBillboard). + 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. + - + - How spread out is the noise for the DetailPrototype. + 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. + - + - GameObject used by the DetailPrototype. + 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. + - + - Texture used by the DetailPrototype. + 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. + - + - Render mode for the DetailPrototype. + 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. + - + - Render mode for detail prototypes. + 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. + - + - The detail prototype will use the grass shader. + 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. + - + - The detail prototype will be rendered as billboards that are always facing the camera. + Check if a collider overlaps a point in space. + A point in world space. + + Does point overlap the collider? + - + - Will show the prototype using diffuse shading. + 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. + - + - Describes physical orientation of the device as determined by the OS. + 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. + - + - The device is held parallel to the ground with the screen facing downwards. + Represents the separation or overlap of two Collider2D. - + - The device is held parallel to the ground with the screen facing upwards. + Gets the distance between two colliders. - + - The device is in landscape mode, with the device held upright and the home button on the right side. + Gets whether the distance represents an overlap or not. - + - The device is in landscape mode, with the device held upright and the home button on the left side. + Gets whether the distance is valid or not. - + - The device is in portrait mode, with the device held upright and the home button at the bottom. + A normalized vector that points from pointB to pointA. - + - The device is in portrait mode but upside down, with the device held upright and the home button at the top. + A point on a Collider2D that is a specific distance away from pointB. - + - The orientation of the device cannot be determined. + A point on a Collider2D that is a specific distance away from pointA. - + - Enumeration for SystemInfo.deviceType, denotes a coarse grouping of kinds of devices. + Describes a collision. - + - A stationary gaming console. + The Collider we hit (Read Only). - + - Desktop or laptop computer. + The contact points generated by the physics engine. - + - A handheld device like mobile phone or a tablet. + The GameObject whose collider we are colliding with. (Read Only). - + - Device type is unknown. You should never see this in practice. + The total impulse applied to this contact pair to resolve the collision. - + - Prevents MonoBehaviour of same type (or subtype) to be added more than once to a GameObject. + The relative linear velocity of the two colliding objects (Read Only). - + - Provides access to a display / screen for rendering operations. + The Rigidbody we hit (Read Only). This is null if the object we hit is a collider with no rigidbody attached. - + - Color RenderBuffer. + The Transform of the object we hit (Read Only). - + - Depth RenderBuffer. + Collision details returned by 2D physics callback functions. - + - The list of currently connected Displays. Contains at least one (main) display. + The incoming Collider2D involved in the collision with the otherCollider. - + - Main Display. - + The specific points of contact with the incoming Collider2D. - + - Rendering Height. + Indicates whether the collision response or reaction is enabled or disabled. - + - Rendering Width. + The incoming GameObject involved in the collision. - + - System Height. + The other Collider2D involved in the collision with the collider. - + - System Width. + The other Rigidbody2D involved in the collision with the rigidbody. - + - Activate an external display. Eg. Secondary Monitors connected to the System. + The relative linear velocity of the two colliding objects (Read Only). - + - This overloaded function available for Windows allows specifying desired Window Width, Height and Refresh Rate. + The incoming Rigidbody2D involved in the collision with the otherRigidbody. - 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. + The Transform of the incoming object involved in the collision. - Mouse Input Position as Coordinates. - + - This Windows only function can be used to set Size and Position of the Screen when Multi-Display is enabled. + The collision detection mode constants used for Rigidbody.collisionDetectionMode. - 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. + Continuous collision detection is on for colliding with static mesh geometry. - Rendering width. - Rendering height. - + - Joint that keeps two Rigidbody2D objects a fixed distance apart. + Continuous collision detection is on for colliding with static and dynamic geometry. - + - Should the distance be calculated automatically? + Continuous collision detection is off for this Rigidbody. - + - The distance separating the two ends of the joint. + Controls how collisions are detected when a Rigidbody2D moves. - + - Whether to maintain a maximum distance only or not. If not then the absolute distance will be maintained instead. + Ensures that all collisions are detected when a Rigidbody2D moves. - + - A component can be designed drive a RectTransform. The DrivenRectTransformTracker struct is used to specify which RectTransforms it is driving. + When a Rigidbody2D moves, only collisions at the new position are detected. - + - Add a RectTransform to be driven. + This mode is obsolete. You should use Discrete mode. - The object to drive properties. - The RectTransform to be driven. - The properties to be driven. - + - Clear the list of RectTransforms being driven. + CollisionFlags is a bitmask returned by CharacterController.Move. - + - An enumeration of transform properties that can be driven on a RectTransform by an object. + CollisionFlags is a bitmask returned by CharacterController.Move. - + - Selects all driven properties. + CollisionFlags is a bitmask returned by CharacterController.Move. - + - Selects driven property RectTransform.anchoredPosition. + CollisionFlags is a bitmask returned by CharacterController.Move. - + - Selects driven property RectTransform.anchoredPosition3D. + CollisionFlags is a bitmask returned by CharacterController.Move. - + - Selects driven property RectTransform.anchoredPosition.x. + Representation of RGBA colors. - + - Selects driven property RectTransform.anchoredPosition.y. + Alpha component of the color. - + - Selects driven property RectTransform.anchoredPosition3D.z. + Blue component of the color. - + - Selects driven property combining AnchorMaxX and AnchorMaxY. + Solid black. RGBA is (0, 0, 0, 1). - + - Selects driven property RectTransform.anchorMax.x. + Solid blue. RGBA is (0, 0, 1, 1). - + - Selects driven property RectTransform.anchorMax.y. + Completely transparent. RGBA is (0, 0, 0, 0). - + - Selects driven property combining AnchorMinX and AnchorMinY. + Cyan. RGBA is (0, 1, 1, 1). - + - Selects driven property RectTransform.anchorMin.x. + Green component of the color. - + - Selects driven property RectTransform.anchorMin.y. + A version of the color that has had the gamma curve applied. - + - Selects driven property combining AnchorMinX, AnchorMinY, AnchorMaxX and AnchorMaxY. + Gray. RGBA is (0.5, 0.5, 0.5, 1). - + - Deselects all driven properties. + The grayscale value of the color. (Read Only) - + - Selects driven property combining PivotX and PivotY. + Solid green. RGBA is (0, 1, 0, 1). - + - Selects driven property RectTransform.pivot.x. + English spelling for gray. RGBA is the same (0.5, 0.5, 0.5, 1). - + - Selects driven property RectTransform.pivot.y. + A linear value of an sRGB color. - + - Selects driven property Transform.localRotation. + Magenta. RGBA is (1, 0, 1, 1). - + - Selects driven property combining ScaleX, ScaleY && ScaleZ. + Returns the maximum color component value: Max(r,g,b). - + - Selects driven property Transform.localScale.x. + Red component of the color. - + - Selects driven property Transform.localScale.y. + Solid red. RGBA is (1, 0, 0, 1). - + - Selects driven property Transform.localScale.z. + Solid white. RGBA is (1, 1, 1, 1). - + - Selects driven property combining SizeDeltaX and SizeDeltaY. + Yellow. RGBA is (1, 0.92, 0.016, 1), but the color is nice to look at! - + - Selects driven property RectTransform.sizeDelta.x. + Constructs a new Color with given r,g,b,a components. + Red component. + Green component. + Blue component. + Alpha component. - + - Selects driven property RectTransform.sizeDelta.y. + Constructs a new Color with given r,g,b components and sets a to 1. + Red component. + Green component. + Blue component. - + - Allows to control the dynamic Global Illumination. + Creates an RGB colour from HSV input. + Hue [0..1]. + Saturation [0..1]. + 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. + - + - Allows for scaling the contribution coming from realtime & static lightmaps. + Creates an RGB colour from HSV input. + Hue [0..1]. + Saturation [0..1]. + 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. + - + - When enabled, new dynamic Global Illumination output is shown in each frame. + Colors can be implicitly converted to and from Vector4. + - + - Threshold for limiting updates of realtime GI. + Colors can be implicitly converted to and from Vector4. + - + - Allows to set an emissive color for a given renderer quickly, without the need to render the emissive input for the entire system. + Linearly interpolates between colors a and b by t. - The Renderer that should get a new color. - The emissive Color. - The index of the submesh that should use the color. + Color a + Color b + Float for combining a and b - + - Schedules an update of the environment texture. + Linearly interpolates between colors a and b by t. + + + - + - Schedules an update of the albedo and emissive textures of a system that contains the renderer or the terrain. + Divides color a by the float b. Each color component is scaled separately. - 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. + Subtracts color b from color a. Each component is subtracted separately. - 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. + Multiplies two colors together. Each component is multiplied separately. - 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. + Multiplies color a by the float b. Each color component is scaled separately. + + - + - Gets the number of edges. + Multiplies color a by the float b. Each color component is scaled separately. + + - + - Gets the number of points. + Adds two colors together. Each component is added separately. + + - + - Get or set the points defining multiple continuous edges. + 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. - + - Reset to a single edge consisting of two points. + Access the r, g, b,a components using [0], [1], [2], [3] respectively. - + - A base class for all 2D effectors. + Returns a nicely formatted string of this color. + - + - The mask used to select specific layers allowed to interact with the effector. + Returns a nicely formatted string of this color. + - + - Should the collider-mask be used or the global collision matrix? + Representation of RGBA colors in 32 bit format. - + - The mode used to apply Effector2D forces. + Alpha component of the color. - + - The force is applied at a constant rate. + Blue component of the color. - + - The force is applied inverse-linear relative to a point. + Green component of the color. - + - The force is applied inverse-squared relative to a point. + Red component of the color. - + - Selects the source and/or target to be used by an Effector2D. + Constructs a new Color32 with given r, g, b, a components. + + + + - + - The source/target is defined by the Collider2D. + Color32 can be implicitly converted to and from Color. + - + - The source/target is defined by the Rigidbody2D. + Color32 can be implicitly converted to and from Color. + - + - Class used to allow GameObject.AddComponent / GameObject.GetComponent to be used. + Linearly interpolates between colors a and b by t. + + + - + - A UnityGUI event. + Linearly interpolates between colors a and b by t. + + + - + - Is Alt/Option key held down? (Read Only) + Returns a nicely formatted string of this color. + - + - Which mouse button was pressed. + Returns a nicely formatted string of this color. + - + - Is Caps Lock on? (Read Only) + Color space for player settings. - + - The character typed. + Gamma color space. - + - How many consecutive mouse clicks have we received. + Linear color space. - + - Is Command/Windows key held down? (Read Only) + Uninitialized color space. - + - The name of an ExecuteCommand or ValidateCommand Event. + Attribute used to configure the usage of the ColorField and Color Picker for a color. - + - Is Control key held down? (Read Only) + If set to true the Color is treated as a HDR color. - + - The current event that's being processed right now. + Maximum allowed HDR color component value when using the HDR Color Picker. - + - The relative movement of the mouse compared to last event. + Maximum exposure value allowed in the HDR Color Picker. - + - Index of display that the event belongs to. + Minimum allowed HDR color component value when using the Color Picker. - + - Is the current keypress a function key? (Read Only) + Minimum exposure value allowed in the HDR Color Picker. - + - Is this event a keyboard event? (Read Only) + If false then the alpha bar is hidden in the ColorField and the alpha value is not shown in the Color Picker. - + - Is this event a mouse event? (Read Only) + 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). - + - The raw key code for keyboard events. + 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). - + - Which modifier keys are held down. + A collection of common color functions. - + - The mouse position. + Returns the color as a hexadecimal string in the format "RRGGBB". + The color to be converted. + + Hexadecimal string representing the color. + - + - Is the current keypress on the numeric keyboard? (Read Only) + Returns the color as a hexadecimal string in the format "RRGGBBAA". + The color to be converted. + + Hexadecimal string representing the color. + - + - Is Shift held down? (Read Only) + 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. + - + - The type of event. + Struct used to describe meshes to be combined using Mesh.CombineMeshes. - + - Returns the current number of events that are stored in the event queue. + The baked lightmap UV scale and offset applied to the Mesh. - - Current number of events currently in the event queue. - - + - Get a filtered event type for a given control ID. + Mesh to combine. - The ID of the control you are querying from. - + - Create a keyboard event. + The realtime lightmap UV scale and offset applied to the Mesh. - - + - Get the next queued [Event] from the event system. + Sub-Mesh index of the Mesh. - Next Event. - + - Use this event. + Matrix to transform the Mesh with before combining. - + - Types of modifier key that can be active during a keystroke event. + Interface into compass functionality. - + - Alt key. + 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(). - + - Caps lock key. + Accuracy of heading reading in degrees. - + - Command key (Mac). + The heading in degrees relative to the magnetic North Pole. (Read Only) - + - Control key. + The raw geomagnetic data measured in microteslas. (Read Only) - + - Function key. + Timestamp (in seconds since 1970) when the heading was last time updated. (Read Only) - + - No modifier key pressed during a keystroke event. + The heading in degrees relative to the geographic North Pole. (Read Only) - + - Num lock key. + Base class for everything attached to GameObjects. - + - Shift key. + The Animation attached to this GameObject. (Null if there is none attached). - + - THe mode that a listener is operating in. + The AudioSource attached to this GameObject. (Null if there is none attached). - + - The listener will bind to one argument bool functions. + The Camera attached to this GameObject. (Null if there is none attached). - + - The listener will use the function binding specified by the even. + The Collider attached to this GameObject. (Null if there is none attached). - + - The listener will bind to one argument float functions. + The Collider2D component attached to the object. - + - The listener will bind to one argument int functions. + The ConstantForce attached to this GameObject. (Null if there is none attached). - + - The listener will bind to one argument Object functions. + The game object this component is attached to. A component is always attached to a game object. - + - The listener will bind to one argument string functions. + The GUIText attached to this GameObject. (Null if there is none attached). - + - The listener will bind to zero argument functions. + The GUITexture attached to this GameObject (Read Only). (null if there is none attached). - + - Zero argument delegate used by UnityEvents. + The HingeJoint attached to this GameObject. (Null if there is none attached). - + - One argument delegate used by UnityEvents. + The Light attached to this GameObject. (Null if there is none attached). - - + - Two argument delegate used by UnityEvents. + The NetworkView attached to this GameObject (Read Only). (null if there is none attached). - - - + - Three argument delegate used by UnityEvents. + The ParticleEmitter attached to this GameObject. (Null if there is none attached). - - - - + - Four argument delegate used by UnityEvents. + The ParticleSystem attached to this GameObject. (Null if there is none attached). - - - - - + - A zero argument persistent callback that can be saved with the scene. + The Renderer attached to this GameObject. (Null if there is none attached). - + - Add a non persistent listener to the UnityEvent. + The Rigidbody attached to this GameObject. (Null if there is none attached). - Callback function. - + - Constructor. + The Rigidbody2D that is attached to the Component's GameObject. - + - Invoke all registered callbacks (runtime and peristent). + The tag of this game object. - + - Remove a non persistent listener from the UnityEvent. + The Transform attached to this GameObject. - Callback function. - + - One argument version of UnityEvent. + 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? - + - Two argument version of UnityEvent. + 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? - + - Three argument version of UnityEvent. + 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? - + - Four argument version of UnityEvent. + 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? - + - Abstract base class for UnityEvents. + Is this game object tagged with tag ? + The tag to compare. - + - Get the number of registered persistent listeners. + Returns the component of Type type if the game object has one attached, null if it doesn't. + The type of Component to retrieve. - + - Get the target method name of the listener at index index. + Generic version. See the page for more details. - Index of the listener to query. - + - Get the target component of the listener at index index. + Returns the component with name type if the game object has one attached, null if it doesn't. - Index of the listener to query. + - + - Given an object, function name, and a list of argument types; find the method that matches. + Returns the component of Type type in the GameObject or any of its children using depth first search. - Object to search for the method. - Function name to search for. - Argument types for the function. + The type of Component to retrieve. + + A component of the matching type, if found. + - + - Remove all listeners from the event. + Generic version. See the page for more details. + + + A component of the matching type, if found. + - + - Modify the execution state of a persistent listener. + Returns the component of Type type in the GameObject or any of its parents. - Index of the listener to query. - State to set. + The type of Component to retrieve. + + A component of the matching type, if found. + - + - Controls the scope of UnityEvent callbacks. + Generic version. See the page for more details. + + A component of the matching type, if found. + - + - Callback is always issued. + Returns all components of Type type in the GameObject. + The type of Component to retrieve. - + - Callback is not issued. + Generic version. See the page for more details. - + - Callback is only issued in the Runtime and Editor playmode. + 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? - + - Types of UnityGUI input and processing events. + 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? - + - User has right-clicked (or control-clicked on the mac). + Generic version. See the page for more details. + Should Components on inactive GameObjects be included in the found set? + + A list of all found components matching the specified type. + - + - Editor only: drag & drop operation exited. + Generic version. See the page for more details. + + A list of all found components matching the specified type. + - + - Editor only: drag & drop operation performed. + 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? - + - Editor only: drag & drop operation updated. + Generic version. See the page for more details. + Should inactive Components be included in the found set? - + - Execute a special command (eg. copy & paste). + Generic version. See the page for more details. + Should inactive Components be included in the found set? - + - Event should be ignored. + 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? - + - A keyboard key was pressed. + 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? - + - A keyboard key was released. + 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? - + - A layout event. + 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? - + - Mouse button was pressed. + 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? - + - Mouse was dragged. + 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? - + - Mouse was moved (editor views only). + 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? - + - Mouse button was released. + 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 repaint event. One is sent every frame. + A Collider that can merge other Colliders together. - + - The scroll wheel was moved. + Controls the radius of all edges created by the Collider. - + - Already processed event. + Specifies when to generate the Composite Collider geometry. - + - Validates a special command (e.g. copy & paste). + Specifies the type of geometry the Composite Collider should generate. - + - Makes a script execute in edit mode. + The number of paths in the Collider. - + - Playable that plays an AnimationClip. Can be used as an input to an AnimationPlayable. + Gets the total number of points in all the paths within the Collider. - + - AnimationClip played by this playable. + Controls the minimum distance allowed between generated vertices. - + - The speed at which the AnimationClip is played. + Regenerates the Composite Collider geometry. - + - Playable used to mix AnimationPlayables. + Specifies when to generate the Composite Collider geometry. - + - Automatically creates an AnimationClipPlayable for each supplied AnimationClip, then sets them as inputs to the mixer. + Sets the Composite Collider geometry to not automatically update when a Collider used by the Composite Collider changes. - AnimationClips to be used as inputs. - - Returns false if the creation of the AnimationClipPlayables failed, or if the connection failed. - - + - Base class for all animation related Playable classes. + Sets the Composite Collider geometry to update synchronously immediately when a Collider used by the Composite Collider changes. - + - Adds an AnimationPlayable as an input. + Specifies the type of geometry the Composite Collider generates. - A playable to connect. - - Returns the index of the port the playable was connected to. - - + - Disconnects all input playables. + Sets the Composite Collider to generate closed outlines for the merged Collider geometry consisting of only edges. - - Returns false if the removal fails. - - + - Removes a playable from the list of inputs. + Sets the Composite Collider to generate closed outlines for the merged Collider geometry consisting of convex polygon shapes. - Index of the playable to remove. - AnimationPlayable to remove. - - Returns false if the removal could not be removed because it wasn't found. - - + - Removes a playable from the list of inputs. + Gets a path from the Collider by its index. - Index of the playable to remove. - AnimationPlayable to remove. + The index of the path from 0 to pathCount. + An ordered array of the vertices or points in the selected path. - Returns false if the removal could not be removed because it wasn't found. + Returns the number of points placed in the points array. - + - Sets an AnimationPlayable as an input. + Gets the number of points in the specified path from the Collider by its index. - AnimationPlayable to be used as input. - Index of the input. + The index of the path from 0 to pathCount. - Returns false if the operation could not be completed. + Returns the number of points in the path specified by index. - + - Replaces existing inputs with the supplied collection of AnimationPlayable. + GPU data buffer, mostly for use with compute shaders. - Collection of AnimationPlayables to be used as inputs. - - Returns false if the operation could not be completed. - - + - Playable that plays a RuntimeAnimatorController. Can be used as an input to an AnimationPlayable. + Number of elements in the buffer (Read Only). - + - RuntimeAnimatorController played by this playable. + Size of one element in the buffer (Read Only). - + - See IAnimatorControllerPlayable.layerCount. + 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. - + - See IAnimatorControllerPlayable.parameterCount. + 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). - + - See IAnimatorControllerPlayable.CrossFade. + 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). - + - See IAnimatorControllerPlayable.CrossFade. + Read data values from the buffer into an array. - - - - - + An array to receive the data. - + - See IAnimatorControllerPlayable.CrossFadeInFixedTime. + Retrieve a native (underlying graphics API) pointer to the buffer. - - - - - + + Pointer to the underlying graphics API buffer. + - + - See IAnimatorControllerPlayable.CrossFadeInFixedTime. + Release a Compute Buffer. - - - - - - + - See IAnimatorControllerPlayable.GetAnimatorTransitionInfo. + Sets counter value of append/consume buffer. - + Value of the append/consume counter. - + - See IAnimatorControllerPlayable.GetBool. + Set the buffer with values from an array. - - + Array of values to fill the buffer. - + - See IAnimatorControllerPlayable.GetBool. + ComputeBuffer type. - - - + - See IAnimatorControllerPlayable.GetCurrentAnimatorClipInfo. + Append-consume ComputeBuffer type. - - + - See IAnimatorControllerPlayable.GetCurrentAnimatorStateInfo. + ComputeBuffer with a counter. - - + - See IAnimatorControllerPlayable.GetFloat. + Default ComputeBuffer type (structured buffer). - - - + - See IAnimatorControllerPlayable.GetFloat. + ComputeBuffer is attempted to be located in GPU memory. - - - + - See IAnimatorControllerPlayable.GetInteger. + ComputeBuffer used for Graphics.DrawProceduralIndirect, ComputeShader.DispatchIndirect or Graphics.DrawMeshInstancedIndirect arguments. - - - + - See IAnimatorControllerPlayable.GetInteger. + Raw ComputeBuffer type (byte address buffer). - - - + - See IAnimatorControllerPlayable.GetLayerIndex. + Compute Shader asset. - - + - See IAnimatorControllerPlayable.GetLayerName. + 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. - + - See IAnimatorControllerPlayable.GetLayerWeight. + 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. - + - See IAnimatorControllerPlayable.GetNextAnimatorClipInfo. + Find ComputeShader kernel index. - + Name of kernel function. + + The Kernel index, or logs a "FindKernel failed" error message if the kernel is not found. + - + - See IAnimatorControllerPlayable.GetNextAnimatorStateInfo. + 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. - + - See AnimatorController.GetParameter. + Checks whether a shader contains a given kernel. - + The name of the kernel to look for. + + True if the kernel is found, false otherwise. + - + - See IAnimatorControllerPlayable.HasState. + Set a bool parameter. - - + Variable name in shader code. + Property name ID, use Shader.PropertyToID to get it. + Value to set. - + - See IAnimatorControllerPlayable.IsInTransition. + Set a bool parameter. - + Variable name in shader code. + Property name ID, use Shader.PropertyToID to get it. + Value to set. - + - See IAnimatorControllerPlayable.IsParameterControlledByCurve. + 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. - + - See IAnimatorControllerPlayable.IsParameterControlledByCurve. + 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. - + - See IAnimatorControllerPlayable.Play. + Set a float parameter. - - - - + Variable name in shader code. + Property name ID, use Shader.PropertyToID to get it. + Value to set. - + - See IAnimatorControllerPlayable.Play. + Set a float parameter. - - - - + Variable name in shader code. + Property name ID, use Shader.PropertyToID to get it. + Value to set. - + - See IAnimatorControllerPlayable.PlayInFixedTime. + 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. - + - See IAnimatorControllerPlayable.PlayInFixedTime. + 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. - + - See IAnimatorControllerPlayable.ResetTrigger. + Set an integer parameter. - - + Variable name in shader code. + Property name ID, use Shader.PropertyToID to get it. + Value to set. - + - See IAnimatorControllerPlayable.ResetTrigger. + Set an integer parameter. - - + Variable name in shader code. + Property name ID, use Shader.PropertyToID to get it. + Value to set. - + - See IAnimatorControllerPlayable.SetBool. + 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. - + - See IAnimatorControllerPlayable.SetBool. + 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. - + - See IAnimatorControllerPlayable.SetFloat. + 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. - + - See IAnimatorControllerPlayable.SetFloat. + 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. - + - See IAnimatorControllerPlayable.SetInteger. + 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. - + - See IAnimatorControllerPlayable.SetInteger. + 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. - + - See IAnimatorControllerPlayable.SetLayerWeight. + Set a vector parameter. - - + Variable name in shader code. + Property name ID, use Shader.PropertyToID to get it. + Value to set. - + - See IAnimatorControllerPlayable.SetTrigger. + Set a vector parameter. - - + Variable name in shader code. + Property name ID, use Shader.PropertyToID to get it. + Value to set. - + - See IAnimatorControllerPlayable.SetTrigger. + The configurable joint is an extremely flexible joint giving you complete control over rotation and linear motion. - - - + - The DirectorPlayer is the base class for all components capable of playing a Experimental.Director.Playable tree. + Definition of how the joint's rotation will behave around its local X axis. Only used if Rotation Drive Mode is Swing & Twist. - + - Returns the Player's current local time. + The configuration of the spring attached to the angular X limit of the joint. - - Current local time. - - + - Returns the current Experimental.Director.DirectorUpdateMode. + Allow rotation around the X axis to be Free, completely Locked, or Limited according to Low and High Angular XLimit. - - Current update mode for this player. - - + - Starts playing a Experimental.Director.Playable tree. + Boundary defining rotation restriction, based on delta from original rotation. - The root Experimental.Director.Playable in the tree. - + - Sets the Player's local time. + Allow rotation around the Y axis to be Free, completely Locked, or Limited according to Angular YLimit. - The new local time. - + - Specifies the way the Player's will increment when it is playing. + 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. - - + - Stop the playback of the Player and Experimental.Director.Playable. + The configuration of the spring attached to the angular Y and angular Z limits of the joint. - + - Defines what time source is used to update a Director graph. + Boundary defining rotation restriction, based on delta from original rotation. - + - Update is based on DSP (Digital Sound Processing) clock. Use this for graphs that need to be synchronized with Audio. + Allow rotation around the Z axis to be Free, completely Locked, or Limited according to Angular ZLimit. - + - 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. + If enabled, all Target values will be calculated in world space instead of the object's local space. - + - Update mode is manual. You need to manually call PlayerController.Tick with your own deltaTime. This can be useful for graphs that can be completely disconnected from the rest of the the game. Example: Localized Bullet time. + Boundary defining upper rotation restriction, based on delta from original rotation. - + - 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. + Boundary defining movement restriction, based on distance from the joint's origin. - + - This structure contains the frame information a Playable receives in Playable.PrepareFrame. + The configuration of the spring attached to the linear limit of the joint. - + - Time difference between this frame and the preceding frame in double precision. + Boundary defining lower rotation restriction, based on delta from original rotation. - + - Time difference between this frame and the preceding frame. + 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). - + - Time difference between this frame and the preceding frame in double precision. + 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). - + - Current time at the start of the frame in double precision. + 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. - + - Time speed multiplier in double precision. + Control the object's rotation with either X & YZ or Slerp Drive by itself. - + - Last frame's start time. + The joint's secondary axis. - + - Current time at the start of the frame. + Definition of how the joint's rotation will behave around all local axes. Only used if Rotation Drive Mode is Slerp Only. - + - Time speed multiplier. 1 is normal speed, 0 is stopped. + If enabled, the two connected rigidbodies will be swapped, as if the joint was attached to the other body. - + - Frame update counter. Can be used to know when to initialize your Playable (when updateid is 0). + This is a Vector3. It defines the desired angular velocity that the joint should rotate into. - + - Interface for objects that can control an AnimatorController. + The desired position that the joint should move into. - + - The AnimatorController layer count. + This is a Quaternion. It defines the desired rotation that the joint should rotate into. - + - The number of AnimatorControllerParameters used by the AnimatorController. + The desired velocity that the joint should move along. - + - Creates a dynamic transition between the current state and the destination state. + Definition of how the joint's movement will behave along its local X axis. - The name of the destination state. - The duration of the transition. Value is in source state normalized time. - Layer index containing the destination state. If no layer is specified or layer is -1, the first state that is found with the given name or hash will be played. - Start time of the current destination state. Value is in source state normalized time, should be between 0 and 1. If no explicit normalizedTime is specified or normalizedTime value is float.NegativeInfinity, the state will either be played from the start if it's not already playing, or will continue playing from its current time and no transition will happen. - The AnimatorState fullPathHash, nameHash or shortNameHash to play. Passing 0 will transition to self. - + - Creates a dynamic transition between the current state and the destination state. + Allow movement along the X axis to be Free, completely Locked, or Limited according to Linear Limit. - The name of the destination state. - The duration of the transition. Value is in source state normalized time. - Layer index containing the destination state. If no layer is specified or layer is -1, the first state that is found with the given name or hash will be played. - Start time of the current destination state. Value is in source state normalized time, should be between 0 and 1. If no explicit normalizedTime is specified or normalizedTime value is float.NegativeInfinity, the state will either be played from the start if it's not already playing, or will continue playing from its current time and no transition will happen. - The AnimatorState fullPathHash, nameHash or shortNameHash to play. Passing 0 will transition to self. - + - Same as IAnimatorControllerPlayable.CrossFade, but the duration and offset in the target state are in fixed time. + Definition of how the joint's movement will behave along its local Y axis. - The name of the destination state. - The duration of the transition. Value is in seconds. - Layer index containing the destination state. If no layer is specified or layer is -1, the first state that is found with the given name or hash will be played. - Start time of the current destination state. Value is in seconds. If no explicit fixedTime is specified or fixedTime value is float.NegativeInfinity, the state will either be played from the start if it's not already playing, or will continue playing from its current time and no transition will happen. - The AnimatorState fullPathHash, nameHash or shortNameHash to play. Passing 0 will transition to self. - + - Same as IAnimatorControllerPlayable.CrossFade, but the duration and offset in the target state are in fixed time. + Allow movement along the Y axis to be Free, completely Locked, or Limited according to Linear Limit. - The name of the destination state. - The duration of the transition. Value is in seconds. - Layer index containing the destination state. If no layer is specified or layer is -1, the first state that is found with the given name or hash will be played. - Start time of the current destination state. Value is in seconds. If no explicit fixedTime is specified or fixedTime value is float.NegativeInfinity, the state will either be played from the start if it's not already playing, or will continue playing from its current time and no transition will happen. - The AnimatorState fullPathHash, nameHash or shortNameHash to play. Passing 0 will transition to self. - + - Gets the Transition information on a specified AnimatorController layer. + Definition of how the joint's movement will behave along its local Z axis. - The layer's index. - + - See IAnimatorControllerPlayable.GetBool. + Allow movement along the Z axis to be Free, completely Locked, or Limited according to Linear Limit. - The name of the parameter. - The id of the parameter. The id is generated using Animator::StringToHash. - + - See IAnimatorControllerPlayable.GetBool. + Constrains movement for a ConfigurableJoint along the 6 axes. - The name of the parameter. - The id of the parameter. The id is generated using Animator::StringToHash. - + - Gets the list of AnimatorClipInfo currently played by the current state. + Motion along the axis will be completely free and completely unconstrained. - The layer's index. - + - Gets the current State information on a specified AnimatorController layer. + Motion along the axis will be limited by the respective limit. - The layer's index. - + - Gets the value of a float parameter. + Motion along the axis will be locked. - The name of the parameter. - The id of the parameter. The id is generated using Animator::StringToHash. - + - Gets the value of a float parameter. + The various test results the connection tester may return with. - The name of the parameter. - The id of the parameter. The id is generated using Animator::StringToHash. - + - Gets the value of an integer parameter. + Some unknown error occurred. - The name of the parameter. - The id of the parameter. The id is generated using Animator::StringToHash. - + - Gets the value of an integer parameter. + Port-restricted NAT type, can do NAT punchthrough to everyone except symmetric. - The name of the parameter. - The id of the parameter. The id is generated using Animator::StringToHash. - + - Gets the index of the layer with specified name. + Symmetric NAT type, cannot do NAT punchthrough to other symmetric types nor port restricted type. - The layer's name. - + - Gets name of the layer. + Address-restricted cone type, NAT punchthrough fully supported. - The layer's index. - + - Gets the layer's current weight. + Full cone type, NAT punchthrough fully supported. - The layer's index. - + - Gets the list of AnimatorClipInfo currently played by the next state. + Public IP address detected and game listen port is accessible to the internet. - The layer's index. - + - Gets the next State information on a specified AnimatorController layer. + Public IP address detected but server is not initialized and no port is listening. - The layer's index. - + - Read only access to the AnimatorControllerParameters used by the animator. + Public IP address detected but the port is not connectable from the internet. - The index of the parameter. - + - Returns true if the AnimatorState is present in the Animator's controller. + Test result undetermined, still in progress. - The layer's index. - The AnimatorState fullPathHash, nameHash or shortNameHash. - + - Is the specified AnimatorController layer in a transition. + A force applied constantly. - The layer's index. - + - Returns true if a parameter is controlled by an additional curve on an animation. + The force applied to the rigidbody every frame. - The name of the parameter. - The id of the parameter. The id is generated using Animator::StringToHash. - + - Returns true if a parameter is controlled by an additional curve on an animation. + The force - relative to the rigid bodies coordinate system - applied every frame. - The name of the parameter. - The id of the parameter. The id is generated using Animator::StringToHash. - + - Plays a state. + The torque - relative to the rigid bodies coordinate system - applied every frame. - The name of the state to play. - Layer index containing the destination state. If no layer is specified or layer is -1, the first state that is found with the given name or hash will be played. - Start time of the current destination state. Value is in normalized time. If no explicit normalizedTime is specified or value is float.NegativeInfinity, the state will either be played from the start if it's not already playing, or will continue playing from its current time. - The AnimatorState fullPathHash, nameHash or shortNameHash to play. Passing 0 will transition to self. - + - Plays a state. + The torque applied to the rigidbody every frame. - The name of the state to play. - Layer index containing the destination state. If no layer is specified or layer is -1, the first state that is found with the given name or hash will be played. - Start time of the current destination state. Value is in normalized time. If no explicit normalizedTime is specified or value is float.NegativeInfinity, the state will either be played from the start if it's not already playing, or will continue playing from its current time. - The AnimatorState fullPathHash, nameHash or shortNameHash to play. Passing 0 will transition to self. - + - Same as IAnimatorControllerPlayable.Play, but the offset in the target state is in fixed time. + Applies both linear and angular (torque) forces continuously to the rigidbody each physics update. - The name of the state to play. - Layer index containing the destination state. If no layer is specified or layer is -1, the first state that is found with the given name or hash will be played. - Start time of the current destination state. Value is in seconds. If no explicit fixedTime is specified or fixedTime value is float.NegativeInfinity, the state will either be played from the start if it's not already playing, or will continue playing from its current time. - The AnimatorState fullPathHash, nameHash or shortNameHash to play. Passing 0 will transition to self. - + - Same as IAnimatorControllerPlayable.Play, but the offset in the target state is in fixed time. + The linear force applied to the rigidbody each physics update. - The name of the state to play. - Layer index containing the destination state. If no layer is specified or layer is -1, the first state that is found with the given name or hash will be played. - Start time of the current destination state. Value is in seconds. If no explicit fixedTime is specified or fixedTime value is float.NegativeInfinity, the state will either be played from the start if it's not already playing, or will continue playing from its current time. - The AnimatorState fullPathHash, nameHash or shortNameHash to play. Passing 0 will transition to self. - + - Resets the trigger parameter to false. + The linear force, relative to the rigid-body coordinate system, applied each physics update. - The name of the parameter. - The id of the parameter. The id is generated using Animator::StringToHash. - + - Resets the trigger parameter to false. + The torque applied to the rigidbody each physics update. - The name of the parameter. - The id of the parameter. The id is generated using Animator::StringToHash. - + - See IAnimatorControllerPlayable.SetBool. + A set of parameters for filtering contact results. - The name of the parameter. - The new value for the parameter. - The id of the parameter. The id is generated using Animator::StringToHash. - + - See IAnimatorControllerPlayable.SetBool. + Given the current state of the contact filter, determine whether it would filter anything. - The name of the parameter. - The new value for the parameter. - The id of the parameter. The id is generated using Animator::StringToHash. - + - Sets the value of a float parameter. + Sets the contact filter to filter the results that only include Collider2D on the layers defined by the layer mask. - The name of the parameter. - The new value for the parameter. - The id of the parameter. The id is generated using Animator::StringToHash. - + - Sets the value of a float parameter. + Sets the contact filter to filter the results to only include Collider2D with a Z coordinate (depth) less than this value. - The name of the parameter. - The new value for the parameter. - The id of the parameter. The id is generated using Animator::StringToHash. - + - Sets the value of an integer parameter. + Sets the contact filter to filter the results to only include contacts with collision normal angles that are less than this angle. - The name of the parameter. - The new value for the parameter. - The id of the parameter. The id is generated using Animator::StringToHash. - + - Sets the value of an integer parameter. + Sets the contact filter to filter the results to only include Collider2D with a Z coordinate (depth) greater than this value. - The name of the parameter. - The new value for the parameter. - The id of the parameter. The id is generated using Animator::StringToHash. - + - Sets the layer's current weight. + Sets the contact filter to filter the results to only include contacts with collision normal angles that are greater than this angle. - The layer's index. - The weight of the layer. - + - Sets a trigger parameter to active. -A trigger parameter is a bool parameter that gets reset to false when it has been used in a transition. For state machines with multiple layers, the trigger will only get reset once all layers have been evaluated, so that the layers can synchronize their transitions on the same parameter. + Sets the contact filter to filter the results by depth using minDepth and maxDepth. - The name of the parameter. - The id of the parameter. The id is generated using Animator::StringToHash. - + - Sets a trigger parameter to active. -A trigger parameter is a bool parameter that gets reset to false when it has been used in a transition. For state machines with multiple layers, the trigger will only get reset once all layers have been evaluated, so that the layers can synchronize their transitions on the same parameter. + Sets the contact filter to filter results by layer mask. - The name of the parameter. - The id of the parameter. The id is generated using Animator::StringToHash. - + - Playables are customizable runtime objects that can be connected together in a tree to create complex behaviours. + Sets the contact filter to filter the results by the collision's normal angle using minNormalAngle and maxNormalAngle. - + - The count of inputs on the Playable. This count includes slots that aren't connected to anything. This is equivalent to, but much faster than calling GetInputs().Length. + Sets the contact filter to filter within the minDepth and maxDepth range, or outside that range. - + - The count of inputs on the Playable. This count includes slots that aren't connected to anything. This is equivalent to, but much faster than calling GetOutputs().Length. + Sets the contact filter to filter within the minNormalAngle and maxNormalAngle range, or outside that range. - + - Current Experimental.Director.PlayState of this playable. This indicates whether the Playable is currently playing or paused. + Sets to filter contact results based on trigger collider involvement. - + - Current local time for this Playable. + Turns off depth filtering by setting useDepth to false. The associated values of minDepth and maxDepth are not changed. - + - Safely disconnects all connected inputs and resizes the input array to 0. + Turns off layer mask filtering by setting useLayerMask to false. The associated value of layerMask is not changed. - + - Connects two Playables together. + Turns off normal angle filtering by setting useNormalAngle to false. The associated values of minNormalAngle and maxNormalAngle are not changed. - Playable to be used as input. - Playable on which the input will be connected. - Optional index of the output on the source Playable. - Optional index of the input on the target Playable. - - Returns false if the operation could not be completed. - - + - Disconnects an input from a Playable. + Checks if the Transform for obj is within the depth range to be filtered. - Playable from which the input will be disconnected. - Index of the input to disconnect. - + 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. + - + - Implements IDisposable. Call this method to release the resources allocated by the Playable. + 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. + - + - Returns the Playable connected at the specified index. + Checks if the angle of normal is within the normal angle range to be filtered. - Index of the input. + The normal used to calculate an angle. - 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 Playable::Disconnect. + Returns true when normal is excluded by the filter and false if otherwise. - + - Returns a lists of the input Playables. + Checks if the angle is within the normal angle range to be filtered. - List of Playables connected. This list can include nulls if Playables were disconnected from this Playable via Playable.Disconnect. + The angle used for comparison in the filter. + + Returns true when angle is excluded by the filter and false if otherwise. + - + - Get the weight of the Playable at a specified index. + Checks if the collider is a trigger and should be filtered by the useTriggers to be filtered. - Index of the Playable. + The Collider2D used to check for a trigger. - Weight of the input Playable. Returns -1 if there is no input connected at this input index. + Returns true when collider is excluded by the filter and false if otherwise. - + - Returns the Playable connected at the specified output index. + Sets the contact filter to not filter any ContactPoint2D. - Index of the output. - 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 Playable::Disconnect. + A copy of the contact filter set to not filter any ContactPoint2D. - + - Get the list of ouputs connected on this Playable. + Sets the minDepth and maxDepth filter properties and turns on depth filtering by setting useDepth to true. - List of output Playables. + The value used to set minDepth. + The value used to set maxDepth. - + - Callback called when the PlayState has changed + Sets the layerMask filter property using the layerMask parameter provided and also enables layer mask filtering by setting useLayerMask to true. - New PlayState + The value used to set the layerMask. - + - Callback called when the current time has changed + Sets the minNormalAngle and maxNormalAngle filter properties and turns on normal angle filtering by setting useNormalAngle to true. - New local time + The value used to set the minNormalAngle. + The value used to set the maxNormalAngle. - + - Prepares the Experimental.Director.Playable tree for the next frame. PrepareFrame is called before the tree is evaluated. + Describes a contact point where the collision occurs. - Data for the current frame. - + - Evaluates the Playable with a delta time. + Normal of the contact point. - The Experimental.Director.FrameData for the current frame. - Custom data passed down the tree, specified in DirectorPlayer.Play. - + - Set the weight of an input. + The other collider in contact at the point. - Index of the input. - Weight of the input. - - Returns false if there is no input Playable connected at that index. - - + - Status of a Playable. + The point of contact. - + - The Playable has been paused. Its local time will not advance. + The distance between the colliders at the contact point. - + - The Playable is currently Playing. + The first collider in contact at the point. - + - Manage and process HTTP response body data received from a remote server. + Details about a specific point of contact involved in a 2D physics collision. - + - Returns the raw bytes downloaded from the remote server, or null. (Read Only) + The incoming Collider2D involved in the collision with the otherCollider. - + - 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) + Indicates whether the collision response or reaction is enabled or disabled. - + - Convenience property. Returns the bytes from data interpreted as a UTF8 string. (Read Only) + Surface normal at the contact point. - + - Callback, invoked when all data has been received from the remote server. + Gets the impulse force applied at the contact point along the ContactPoint2D.normal. - + - Signals that this [DownloadHandler] is no longer being used, and should clean up any resources it is using. + The other Collider2D involved in the collision with the collider. - + - Callback, invoked when the data property is accessed. + The other Rigidbody2D involved in the collision with the rigidbody. - - Byte array to return as the value of the data property. - - + - Callback, invoked when UnityWebRequest.downloadProgress is accessed. + The point of contact between the two colliders in world space. - - The return value for UnityWebRequest.downloadProgress. - - + - Callback, invoked when the text property is accessed. + Gets the relative velocity of the two colliders at the contact point (Read Only). - - String to return as the return value of the text property. - - + - Callback, invoked with a Content-Length header is received. + The incoming Rigidbody2D involved in the collision with the otherRigidbody. - The value of the received Content-Length header. - + - Callback, invoked as data is received from the remote server. + Gets the distance between the colliders at the contact point. - 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. + Gets the impulse force applied at the contact point which is perpendicular to the ContactPoint2D.normal. - + - Returns the downloaded AssetBundle, or null. (Read Only) + The ContextMenu attribute allows you to add commands to the context menu. - + - Standard constructor for non-cached asset bundles. + Adds the function to the context menu of the component. - 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. + 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. - + - Simple versioned constructor. Caches downloaded asset bundles. + Adds the function to the context menu of the component. - 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. + 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. - + - Versioned constructor. Caches downloaded asset bundles. + Adds the function to the context menu of the component. - 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. + 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. - + - Returns the downloaded AssetBundle, or null. + Use this attribute to add a context menu to a field that calls a named method. - 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>. + The name of the function that should be called. - - Not implemented. - - + - Not implemented. Throws <a href="http:msdn.microsoft.comen-uslibrarysystem.notsupportedexception">NotSupportedException<a>. + The name of the context menu item. - - Not implemented. - - + - A general-purpose DownloadHandler implementation which stores received data in a native byte buffer. + 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. - + - Default constructor. + ControllerColliderHit is used by CharacterController.OnControllerColliderHit to give detailed information about the collision and how to deal with it. - + - Returns a copy of the native-memory buffer interpreted as a UTF8 string. + The collider that was hit by the controller. - 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. + The controller that hit the collider. - - A copy of the data which has been downloaded. - - + - Returns a copy of the native-memory buffer interpreted as a UTF8 string. + The game object that was hit by the controller. - - A string representing the data in the native-memory buffer. - - + - An abstract base class for user-created scripting-driven DownloadHandler implementations. + The direction the CharacterController was moving in when the collision occured. - + - Create a DownloadHandlerScript which allocates new buffers when passing data to callbacks. + How far the character has travelled until it hit the collider. - + - Create a DownloadHandlerScript which reuses a preallocated buffer to pass data to callbacks. + The normal of the surface we collided with in world space. - 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. + The impact point in world space. - + - Returns the downloaded Texture, or null. (Read Only) + The rigidbody that was hit by the controller. - + - Default constructor. + The transform that was hit by the controller. - + - Constructor, allows TextureImporter.isReadable property to be set. + 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. - Value to set for TextureImporter.isReadable. - + - Returns the downloaded Texture, or null. + Holds data for a single application crash event and provides access to all gathered crash reports. - 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. + Returns last crash report, or null if no reports are available. - - A copy of the downloaded data. - - + - An interface for composition of data into multipart forms. + Returns all currently available reports in a new array. - + - Returns the value to use in the Content-Type header for this form section. + Crash report data as formatted text. - - 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. + Time, when the crash occured. - - 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. + Remove report from available reports list. - - The raw binary data contained in this section. Must not be null or empty. - - + - Returns the name of this section, if any. + Remove all reports from available reports list. - - The section's name, or null. - - + - A helper object for form sections containing generic, non-file data. + Engine API for CrashReporting Service. - + - Returns the value to use in this section's Content-Type header. + This Boolean field will cause CrashReportHandler to capture exceptions when set to true. By default enable capture exceptions is true. - - The Content-Type header for this section, or null. - - + - Returns a string denoting the desired filename of this section on the destination server. + 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 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 default file name used by newly created instances of this type. - - The raw binary data contained in this section. Will not be null or empty. - - + - Returns the name of this section, if any. + The display name for this type shown in the Assets/Create menu. - - The section's name, or null. - - + - Raw data section, unnamed and no Content-Type header. + The position of the menu item within the Assets/Create menu. - Data payload of this section. - + - Raw data section with a section name, no Content-Type header. + Class for handling cube maps, Use this to create or modify existing. - Section name. - Data payload of this section. - + - A raw data section with a section name and a Content-Type header. + The format of the pixel data in the texture (Read Only). - 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. + How many mipmap levels are in this texture (Read Only). - 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. + Actually apply all previous SetPixel and SetPixels changes. - Section name. - String data payload for this section. - C. + When set to true, mipmap levels are recalculated. + When set to true, system memory copy of a texture is released. - + - A names raw data section whose payload is derived from a UTF8 string, with a default Content-Type. + Create a new empty cubemap texture. - Section name. - String data payload for this section. + Width/height of a cube face in pixels. + Pixel data format to be used for the Cubemap. + Should mipmaps be created? - + - An anonymous raw data section whose payload is derived from a UTF8 string, with a default Content-Type. + Returns pixel color at coordinates (face, x, y). - String data payload for this section. + + + - + - A helper object for adding file uploads to multipart forms via the [IMultipartFormSection] API. + Returns pixel colors of a cubemap face. + The face from which pixel data is taken. + Mipmap level for the chosen face. - + - Returns the value of the section's Content-Type header. + Sets pixel color at coordinates (face, x, y). - - The Content-Type header for this section, or null. - + + + + - + - Returns a string denoting the desired filename of this section on the destination server. + Sets pixel colors of a cubemap face. - - The desired file name of this section, or null if this is not a file section. - + Pixel data for the Cubemap face. + The face to which the new data should be applied. + The mipmap level for the face. - + - Returns the raw binary data contained in this section. Will not return null or a zero-length array. + Performs smoothing of near edge regions. - - The raw binary data contained in this section. Will not be null or empty. - + Pixel distance at edges over which to apply smoothing. - + - Returns the name of this section, if any. + Class for handling Cubemap arrays. - - 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. + Number of cubemaps in the array (Read Only). - 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. + Texture format (Read Only). - 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. + Actually apply all previous SetPixels changes. - Raw contents of the file to upload. - Name of the file uploaded by this form section. + When set to true, mipmap levels are recalculated. + When set to true, system memory copy of a texture is released. - + - 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. + Create a new cubemap array. - Name of this form section. - Contents of the file to upload. - A string encoding. - Name of the file uploaded by this form section. + 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. - + - 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. + Create a new cubemap array. - Contents of the file to upload. - A string encoding. - Name of the file uploaded by this form section. + 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. - + - An anonymous file section with data drawn from the UTF8 string data. Assigns a specific file name from fileName and a default Content-Type. + Returns pixel colors of a single array slice/face. - Contents of the file to upload. - Name of the file uploaded by this form section. + Cubemap face to read pixels from. + Array slice to read pixels from. + Mipmap level to read pixels from. + + Array of pixel colors. + - + - The UnityWebRequest object is used to communicate with web servers. + 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. + - + - Indicates whether the UnityWebRequest system should employ the HTTP/1.1 chunked-transfer encoding method. + 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. - + - If true, any DownloadHandler attached to this UnityWebRequest will have DownloadHandler.Dispose called automatically when UnityWebRequest.Dispose is called. + 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. - + - If true, any UploadHandler attached to this UnityWebRequest will have UploadHandler.Dispose called automatically when UnityWebRequest.Dispose is called. + Cubemap face. - + - Returns the number of bytes of body data the system has downloaded from the remote server. (Read Only) + Left facing side (-x). - + - Holds a reference to a DownloadHandler object, which manages body data received from the remote server by this UnityWebRequest. + Downward facing side (-y). - + - Returns a floating-point value between 0.0 and 1.0, indicating the progress of downloading body data from the server. (Read Only) + Backward facing side (-z). - + - A human-readable string describing any system errors encountered by this UnityWebRequest object while handling HTTP requests or responses. (Read Only) + Right facing side (+x). - + - Returns true after the UnityWebRequest has finished communicating with the remote server. (Read Only) + Upwards facing side (+y). - + - Returns true after this UnityWebRequest encounters a system error. (Read Only) + Forward facing side (+z). - + - Returns true while a UnityWebRequest’s configuration properties can be altered. (Read Only) + Cubemap face is unknown or unspecified. - + - The string "CREATE", commonly used as the verb for an HTTP CREATE request. + Describes a set of bounding spheres that should have their visibility and distances maintained. - + - The string "DELETE", commonly used as the verb for an HTTP DELETE request. + Pauses culling group execution. - + - The string "GET", commonly used as the verb for an HTTP GET request. + Sets the callback that will be called when a sphere's visibility and/or distance state has changed. - + - The string "HEAD", commonly used as the verb for an HTTP HEAD request. + Locks the CullingGroup to a specific camera. - + - The string "POST", commonly used as the verb for an HTTP POST request. + Create a CullingGroup. - + - The string "PUT", commonly used as the verb for an HTTP PUT request. + Clean up all memory used by the CullingGroup immediately. - + - Defines the HTTP verb used by this UnityWebRequest, such as GET or POST. + Erase a given bounding sphere by moving the final sphere on top of it. + The index of the entry to erase. - + - Indicates the number of redirects which this UnityWebRequest will follow before halting with a “Redirect Limit Exceeded” system error. + 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. - + - The numeric HTTP response code returned by the server, such as 200, 404 or 500. (Read Only) + Get the current distance band index of a given sphere. + The index of the sphere. + + The sphere's current distance band index. + - + - Returns the number of bytes of body data the system has uploaded to the remote server. (Read Only) + 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. + - + - Holds a reference to the UploadHandler object which manages body data to be uploaded to the remote server. + 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. + - + - Returns a floating-point value between 0.0 and 1.0, indicating the progress of uploading body data to the server. + 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. + - + - Defines the target URL for the UnityWebRequest to communicate with. + 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. + - + - Determines whether this UnityWebRequest will include Expect: 100-Continue in its outgoing request headers. (Default: true). + 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. - + - If in progress, halts the UnityWebRequest as soon as possible. + Sets the number of bounding spheres in the bounding spheres array that are actually being used. + The number of bounding spheres being used. - + - Creates a UnityWebRequest with the default options and no attached DownloadHandler or UploadHandler. Default method is GET. + Sets the array of bounding sphere definitions that the CullingGroup should compute culling for. - The target URL with which this UnityWebRequest will communicate. Also accessible via the url property. + The BoundingSpheres to cull. - + - Creates a UnityWebRequest with the default options and no attached DownloadHandler or UploadHandler. Default method is GET. + Set the reference point from which distance bands are measured. - The target URL with which this UnityWebRequest will communicate. Also accessible via the url property. + A fixed point to measure the distance from. + A transform to measure the distance from. The transform's position will be automatically tracked. - + - Creates a UnityWebRequest configured for HTTP DELETE. + Set the reference point from which distance bands are measured. - The URI to which a DELETE request should be sent. - - A UnityWebRequest configured to send an HTTP DELETE request. - + A fixed point to measure the distance from. + A transform to measure the distance from. The transform's position will be automatically tracked. - + - Signals that this [UnityWebRequest] is no longer being used, and should clean up any resources it is using. + 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. - + - Generate a random 40-byte array for use as a multipart form boundary. + Provides information about the current and previous states of one sphere in a CullingGroup. - - 40 random bytes, guaranteed to contain only printable ASCII values. - - + - Creates a UnityWebRequest configured for HTTP GET. + The current distance band index of the sphere, after the most recent culling pass. - The URI of the resource to retrieve via HTTP GET. - - A UnityWebRequest object configured to retrieve data from uri. - - + - Creates a UnityWebRequest optimized for downloading a Unity Asset Bundle via HTTP GET. + Did this sphere change from being visible to being invisible in the most recent culling pass? - 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 UnityWebRequest configured to downloading a Unity Asset Bundle. - - + - Creates a UnityWebRequest optimized for downloading a Unity Asset Bundle via HTTP GET. + Did this sphere change from being invisible to being visible in the most recent culling pass? - 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 UnityWebRequest configured to downloading a Unity Asset Bundle. - - + - Creates a UnityWebRequest optimized for downloading a Unity Asset Bundle via HTTP GET. + The index of the sphere that has changed. - 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 UnityWebRequest configured to downloading a Unity Asset Bundle. - - + - Retrieves the value of a custom request header. + Was the sphere considered visible by the most recent culling pass? - Name of the custom request header. Case-sensitive. - - 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 distance band index of the sphere before the most recent culling pass. - The name of the HTTP header to retrieve. Case-sensitive. - - 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. + Was the sphere visible before the most recent culling pass? - - A dictionary containing all the response headers received in the latest HTTP response. If no responses have been received, returns null. - - + - Create a UnityWebRequest intended to download an image via HTTP GET and create a Texture based on the retrieved data. + Cursor API for setting the cursor (mouse pointer). - 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. + Determines whether the hardware pointer is locked to the center of the view, constrained to the window, or not constrained at all. - 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. + Determines whether the hardware pointer is visible or not. - The URI to which to send a HTTP HEAD request. - - A UnityWebRequest configured to transmit a HTTP HEAD request. - - + - Create a UnityWebRequest configured to send form data to a server via HTTP POST. + Sets the mouse cursor to the given texture. - The target URI to which form data will be transmitted. - Form body data. Will be URLEncoded via WWWTranscoder.URLEncode 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. + Specify a custom cursor that you wish to use as a cursor. - 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. - + The texture to use for the cursor or null to set the default cursor. Note that a texture needs to be imported with "Read/Write enabled" in the texture importer (or using the "Cursor" defaults), in order to be used as a cursor. + 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. - + - Create a UnityWebRequest configured to send form data to a server via HTTP POST. + How the cursor should behave. - 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. + Confine cursor to the game window. - 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. + Lock cursor to the center of the game window. - 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. - - + - Create a UnityWebRequest configured to upload raw data to a remote server via HTTP PUT. + Cursor behavior is unmodified. - 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. - - + - Create a UnityWebRequest configured to upload raw data to a remote server via HTTP PUT. + Determines whether the mouse cursor is rendered using software rendering or, on supported platforms, hardware rendering. - 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. + Use hardware cursors on supported platforms. - - An AsyncOperation indicating the progress/completion state of the UnityWebRequest. Yield this object to wait until the UnityWebRequest is done. - - + - Converts a List of IMultipartFormSection objects into a byte array containing raw multipart form data. + Force the use of software cursors. - 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. + Specify the source of a Custom Render Texture initialization. - 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. + Custom Render Texture is initalized with a Material. - The key of the header to be set. Case-sensitive. - The header's intended value. - + - Helper object for UnityWebRequests. Manages the buffering and transmission of body data during HTTP requests. + Custom Render Texture is initialized by a Texture multiplied by a Color. - + - Determines the default Content-Type header which will be transmitted with the outbound HTTP request. + Frequency of update or initialization of a Custom Render Texture. - + - The raw data which will be transmitted to the remote server as body data. (Read Only) + Initialization/Update will only occur when triggered by the script. - + - Returns the proportion of data uploaded to the remote server compared to the total amount of data to upload. (Read Only) + Initialization/Update will occur once at load time and then can be triggered again by script. - + - Signals that this [UploadHandler] is no longer being used, and should clean up any resources it is using. + Initialization/Update will occur at every frame. - + - A general-purpose UploadHandler subclass, using a native-code memory buffer. + Space in which coordinates are provided for Update Zones. - + - General constructor. Contents of the input argument are copied into a native buffer. + Coordinates are normalized. (0, 0) is top left and (1, 1) is bottom right. - Raw data to transmit to the remote server. - + - Spectrum analysis windowing types. + Coordinates are expressed in pixels. (0, 0) is top left (width, height) is bottom right. - + - W[n] = 0.42 - (0.5 * COS(nN) ) + (0.08 * COS(2.0 * nN) ). + Base class for custom yield instructions to suspend coroutines. - + - W[n] = 0.35875 - (0.48829 * COS(1.0 * nN)) + (0.14128 * COS(2.0 * nN)) - (0.01168 * COS(3.0 * n/N)). + Indicates if coroutine should be kept suspended. - + - W[n] = 0.54 - (0.46 * COS(n/N) ). + Class containing methods to ease debugging while developing a game. - + - W[n] = 0.5 * (1.0 - COS(n/N) ). + Reports whether the development console is visible. The development console cannot be made to appear using: - + - W[n] = 1.0. + In the Build Settings dialog there is a check box called "Development Build". - + - W[n] = TRI(2n/N). + Get default debug logger. - + - Filtering mode for textures. Corresponds to the settings in a. + 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. - + - Bilinear filtering - texture samples are averaged. + 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. - + - Point filtering - texture pixels become blocky up close. + 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. - + - Trilinear filtering - texture samples are averaged and also blended between mipmap levels. + 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. - + - The Fixed joint groups together 2 rigidbodies, making them stick together in their bound position. + 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. - + - Connects two Rigidbody2D together at their anchor points using a configurable spring. + 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. - + - The amount by which the spring force is reduced in proportion to the movement speed. + Pauses the editor. - + - The frequency at which the spring oscillates around the distance between the objects. + Clears errors from the developer console. - + - The angle referenced between the two bodies used as the constraint for the joint. + 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? - + - A flare asset. Read more about flares in the. + 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? - + - FlareLayer component. + 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? - + - Used by GUIUtility.GetControlID to inform the UnityGUI system if a given control can get keyboard focus. + 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? - + - This is a proper keyboard control. It can have input focus on all platforms. Used for TextField and TextArea controls. + 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? - + - This control can get keyboard focus on Windows, but not on Mac. Used for buttons, checkboxes and other "pressable" things. + 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? - + - This control can never recieve keyboard focus. + 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? - + - Fog mode to use. + 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? - + - Exponential fog. + Logs message to the Unity Console. + String or object to be converted to string representation for display. + Object to which the message applies. - + - Exponential squared fog (default). + Logs message to the Unity Console. + String or object to be converted to string representation for display. + Object to which the message applies. - + - Linear fog. + 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. - + - Script interface for. + 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. - + - The ascent of the font. + Logs a formatted assertion message to the Unity console. + A composite format string. + Format arguments. + Object to which the message applies. - + - Access an array of all characters contained in the font texture. + Logs a formatted assertion message to the Unity console. + A composite format string. + Format arguments. + Object to which the message applies. - + - Is the font a dynamic font. + 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. - + - The default size of the font. + 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. - + - The line height of the font. + Logs a formatted error message to the Unity console. + A composite format string. + Format arguments. + Object to which the message applies. - + - The material used for the font display. + Logs a formatted error message to the Unity console. + A composite format string. + Format arguments. + Object to which the message applies. - + - Set a function to be called when the dynamic font texture is rebuilt. + A variant of Debug.Log that logs an error message to the console. - + Object to which the message applies. + Runtime Exception. - + - Creates a Font object which lets you render a font installed on the user machine. + A variant of Debug.Log that logs an error message to the console. - 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. - + Object to which the message applies. + Runtime Exception. - + - Creates a Font object which lets you render a font installed on the user machine. + Logs a formatted message to the Unity Console. - 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. - + A composite format string. + Format arguments. + Object to which the message applies. - + - Create a new Font. + Logs a formatted message to the Unity Console. - The name of the created Font object. + A composite format string. + Format arguments. + Object to which the message applies. - + - Create a new Font. + A variant of Debug.Log that logs a warning message to the console. - The name of the created Font object. + String or object to be converted to string representation for display. + Object to which the message applies. - + - Get rendering info for a specific character. + A variant of Debug.Log that logs a warning message to the console. - 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. + String or object to be converted to string representation for display. + Object to which the message applies. - + - Get rendering info for a specific character. + Logs a formatted warning message to the Unity Console. - 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. + A composite format string. + Format arguments. + Object to which the message applies. - + - Get rendering info for a specific character. + Logs a formatted warning message to the Unity Console. - 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. + A composite format string. + Format arguments. + Object to which the message applies. - + - Returns the maximum number of verts that the text generator may return for a given string. + Attribute used to make a float, int, or string variable in a script be delayed. - Input string. - + - Get names of fonts installed on the machine. + Attribute used to make a float, int, or string variable in a script be delayed. - - An array of the names of all fonts installed on the machine. - - + - Does this font have a specific character? + Depth texture generation mode for Camera. - 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). + Generate a depth texture. - 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. + Generate a depth + normals texture. - + - Bold style applied to your texts. + Specifies whether motion vectors should be rendered (if possible). - + - Bold and Italic styles applied to your texts. + Do not generate depth texture (Default). - + - Italic style applied to your texts. + Detail prototype used by the Terrain GameObject. - + - No special style is applied. + Bend factor of the detailPrototype. - + - Option for how to apply a force using Rigidbody.AddForce. + Color when the DetailPrototypes are "dry". - + - Add a continuous acceleration to the rigidbody, ignoring its mass. + Color when the DetailPrototypes are "healthy". - + - Add a continuous force to the rigidbody, using its mass. + Maximum height of the grass billboards (if render mode is GrassBillboard). - + - Add an instant force impulse to the rigidbody, using its mass. + Maximum width of the grass billboards (if render mode is GrassBillboard). - + - Add an instant velocity change to the rigidbody, ignoring its mass. + Minimum height of the grass billboards (if render mode is GrassBillboard). - + - Option for how to apply a force using Rigidbody2D.AddForce. + Minimum width of the grass billboards (if render mode is GrassBillboard). - + - Add a force to the Rigidbody2D, using its mass. + How spread out is the noise for the DetailPrototype. - + - Add an instant force impulse to the rigidbody2D, using its mass. + GameObject used by the DetailPrototype. - + - Applies both force and torque to reduce both the linear and angular velocities to zero. + Texture used by the DetailPrototype. - + - The maximum force that can be generated when trying to maintain the friction joint constraint. + Render mode for the DetailPrototype. - + - The maximum torque that can be generated when trying to maintain the friction joint constraint. + Render mode for detail prototypes. - + - Describes options for displaying movie playback controls. + The detail prototype will use the grass shader. - + - Do not display any controls, but cancel movie playback if input occurs. + The detail prototype will be rendered as billboards that are always facing the camera. - + - Display the standard controls for controlling movie playback. + Will show the prototype using diffuse shading. - + - Do not display any controls. + Describes physical orientation of the device as determined by the OS. - + - Display minimal set of controls controlling movie playback. + The device is held parallel to the ground with the screen facing downwards. - + - Describes scaling modes for displaying movies. + The device is held parallel to the ground with the screen facing upwards. - + - Scale the movie until the movie fills the entire screen. + The device is in landscape mode, with the device held upright and the home button on the right side. - + - Scale the movie until one dimension fits on the screen exactly. + The device is in landscape mode, with the device held upright and the home button on the left side. - + - Scale the movie until both dimensions fit the screen exactly. + The device is in portrait mode, with the device held upright and the home button at the bottom. - + - Do not scale the movie. + The device is in portrait mode but upside down, with the device held upright and the home button at the top. - + - Base class for all entities in Unity scenes. + The orientation of the device cannot be determined. - + - Is the GameObject active in the scene? + Enumeration for SystemInfo.deviceType, denotes a coarse grouping of kinds of devices. + +Windows Store Apps: tablets are treated as desktop machines, thus DeviceType.Handheld will only be returned for Windows Phones. - + - The local active state of this GameObject. (Read Only) + A stationary gaming console. - + - The Animation attached to this GameObject (Read Only). (null if there is none attached). + Desktop or laptop computer. - + - The AudioSource attached to this GameObject (Read Only). (null if there is none attached). + A handheld device like mobile phone or a tablet. - + - The Camera attached to this GameObject (Read Only). (null if there is none attached). + Device type is unknown. You should never see this in practice. - + - The Collider attached to this GameObject (Read Only). (null if there is none attached). + Class for handling the connection between Editor and Player. +This connection can be established by connecting the profiler to the player. - + - The Collider2D component attached to this object. + Returns true when Editor is connected to the player. When called in Editor, this function will always returns false. - + - The ConstantForce attached to this GameObject (Read Only). (null if there is none attached). + Send a file from the player to the editor and save it on disk. +You can specify either the absolute path or the relative path. When the path you specify is not absolute, it is relative to the project path. + File Path. + File contents. - + - The GUIText attached to this GameObject (Read Only). (null if there is none attached). + Prevents MonoBehaviour of same type (or subtype) to be added more than once to a GameObject. - + - The GUITexture attached to this GameObject (Read Only). (null if there is none attached). + Provides access to a display / screen for rendering operations. - + - The HingeJoint attached to this GameObject (Read Only). (null if there is none attached). + Gets the state of the display and returns true if the display is active and false if otherwise. - + - Editor only API that specifies if a game object is static. + Color RenderBuffer. - + - The layer the game object is in. A layer is in the range [0...31]. + Depth RenderBuffer. - + - The Light attached to this GameObject (Read Only). (null if there is none attached). + The list of currently connected Displays. Contains at least one (main) display. - + - The NetworkView attached to this GameObject (Read Only). (null if there is none attached). + Main Display. - + - The ParticleEmitter attached to this GameObject (Read Only). (null if there is none attached). + Vertical resolution that the display is rendering at. - + - The ParticleSystem attached to this GameObject (Read Only). (null if there is none attached). + Horizontal resolution that the display is rendering at. - + - The Renderer attached to this GameObject (Read Only). (null if there is none attached). + Vertical native display resolution. - + - The Rigidbody attached to this GameObject (Read Only). (null if there is none attached). + Horizontal native display resolution. - + - The Rigidbody2D component attached to this GameObject. (Read Only) + Activate an external display. Eg. Secondary Monitors connected to the System. - + - Scene that the GameObject is part of. + 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. - + - The tag of this game object. + Query relative mouse coordinates. + Mouse Input Position as Coordinates. - + - The Transform attached to this GameObject. (null if there is none attached). + 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). - + - Adds a component class named className to the game object. + Sets rendering resolution for the display. - + Rendering width in pixels. + Rendering height in pixels. - + - Adds a component class of type componentType to the game object. C# Users can use a generic version. + Joint that keeps two Rigidbody2D objects a fixed distance apart. - - + - Generic version. See the page for more details. + Should the distance be calculated automatically? - + - Calls the method named methodName on every MonoBehaviour in this game object or any of its children. + The distance separating the two ends of the joint. - - - - + - Calls the method named methodName on every MonoBehaviour in this game object or any of its children. + Whether to maintain a maximum distance only or not. If not then the absolute distance will be maintained instead. - - - - + - Calls the method named methodName on every MonoBehaviour in this game object or any of its children. + 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. - + - Is this game object tagged with tag ? + Clear the list of RectTransforms being driven. - The tag to compare. - + - Creates a game object with a primitive mesh renderer and appropriate collider. + An enumeration of transform properties that can be driven on a RectTransform by an object. - The type of primitive object to create. - + - Creates a new game object, named name. + Selects all driven properties. - - + - Creates a new game object. + Selects driven property RectTransform.anchoredPosition. - + - Creates a game object and attaches the specified components. + Selects driven property RectTransform.anchoredPosition3D. - - - + - Finds a game object by name and returns it. + Selects driven property RectTransform.anchoredPosition.x. - - + - Returns a list of active GameObjects tagged tag. Returns empty array if no GameObject was found. + Selects driven property RectTransform.anchoredPosition.y. - The name of the tag to search GameObjects for. - + - Returns one active GameObject tagged tag. Returns null if no GameObject was found. + Selects driven property RectTransform.anchoredPosition3D.z. - The tag to search for. - + - Returns the component of Type type if the game object has one attached, null if it doesn't. + Selects driven property combining AnchorMaxX and AnchorMaxY. - The type of Component to retrieve. - + - Generic version. See the page for more details. + Selects driven property RectTransform.anchorMax.x. - + - Returns the component with name type if the game object has one attached, null if it doesn't. + Selects driven property RectTransform.anchorMax.y. - The type of Component to retrieve. - + - Returns the component of Type type in the GameObject or any of its children using depth first search. + Selects driven property combining AnchorMinX and AnchorMinY. - The type of Component to retrieve. - - A component of the matching type, if found. - - + - Generic version. See the page for more details. + Selects driven property RectTransform.anchorMin.x. - - - A component of the matching type, if found. - - + - Returns the component of Type type in the GameObject or any of its parents. + Selects driven property RectTransform.anchorMin.y. - Type of component to find. - + - Returns the component of Type type in the GameObject or any of its parents. + Selects driven property combining AnchorMinX, AnchorMinY, AnchorMaxX and AnchorMaxY. - + - Returns all components of Type type in the GameObject. + Deselects all driven properties. - The type of Component to retrieve. - + - Generic version. See the page for more details. + Selects driven property combining PivotX and PivotY. - + - Returns all components of Type type in the GameObject or any of its children. + Selects driven property RectTransform.pivot.x. - 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. + Selects driven property RectTransform.pivot.y. - 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. + Selects driven property Transform.localRotation. - 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. + Selects driven property combining ScaleX, ScaleY && ScaleZ. - - A list of all found components matching the specified type. - - + - Returns all components of Type type in the GameObject or any of its parents. + Selects driven property Transform.localScale.x. - The type of Component to retrieve. - Should inactive Components be included in the found set? - + - Generic version. See the page for more details. + Selects driven property Transform.localScale.y. - Should inactive Components be included in the found set? - + - Generic version. See the page for more details. + Selects driven property Transform.localScale.z. - Should inactive Components be included in the found set? - + - Calls the method named methodName on every MonoBehaviour in this game object. + Selects driven property combining SizeDeltaX and SizeDeltaY. - 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. + Selects driven property RectTransform.sizeDelta.x. - 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. + Selects driven property RectTransform.sizeDelta.y. - 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? - + - + Allows to control the dynamic Global Illumination. - - - + - Calls the method named methodName on every MonoBehaviour in this game object and on every ancestor of the behaviour. + Allows for scaling the contribution coming from realtime & static lightmaps. - 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. + When enabled, new dynamic Global Illumination output is shown in each frame. - 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. + Threshold for limiting updates of realtime GI. The unit of measurement is "percentage intensity change". - 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? - + - + 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. - + - Activates/Deactivates the GameObject. + Schedules an update of the environment texture. - Activate or deactivation the object. - + - Utility class for common geometric functions. + 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. - + - Calculates frustum planes. + 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. - + - Calculates frustum planes. + 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. - + - Returns true if bounds are inside the plane array. + Collider for 2D physics representing an arbitrary set of connected edges (lines) defined by its vertices. - - - + - Gizmos are used to give visual debugging or setup aids in the scene view. + Gets the number of edges. - + - Sets the color for the gizmos that will be drawn next. + Controls the radius of all edges created by the collider. - + - Set the gizmo matrix used to draw all gizmos. + Gets the number of points. - + - Draw a solid box with center and size. + Get or set the points defining multiple continuous edges. - - - + - Draw a camera frustum using the currently set Gizmos.matrix for it's location and rotation. + Reset to a single edge consisting of two points. - 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. + A base class for all 2D effectors. - 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 mask used to select specific layers allowed to interact with the effector. - 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. + Should the collider-mask be used or the global collision matrix? - 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 mode used to apply Effector2D forces. - 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. + The force is applied at a constant rate. - - - - + - Draw an icon at a position in the scene view. + The force is applied inverse-linear relative to a point. - - - - + - Draws a line starting at from towards to. + The force is applied inverse-squared relative to a point. - - - + - Draws a mesh. + Selects the source and/or target to be used by an Effector2D. - 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. + The source/target is defined by the Collider2D. - 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. + The source/target is defined by the Rigidbody2D. - - - - + - Draws a ray starting at from to from + direction. + Class used to allow GameObject.AddComponent / GameObject.GetComponent to be used. - - - - + - Draws a solid sphere with center and radius. + A UnityGUI event. - - - + - Draw a wireframe box with center and size. + Is Alt/Option key held down? (Read Only) - - - + - Draws a wireframe mesh. + Which mouse button was pressed. - 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. + Is Caps Lock on? (Read Only) - 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. + The character typed. - - - + - Low-level graphics library. + How many consecutive mouse clicks have we received. - + - Select whether to invert the backface culling (true) or not (false). + Is Command/Windows key held down? (Read Only) - + - The current modelview matrix. + The name of an ExecuteCommand or ValidateCommand Event. - + - Controls whether Linear-to-sRGB color conversion is performed while rendering. + Is Control key held down? (Read Only) - + - Should rendering be done in wireframe? + The current event that's being processed right now. - + - Begin drawing 3D primitives. + The relative movement of the mouse compared to last event. - Primitives to draw: can be TRIANGLES, TRIANGLE_STRIP, QUADS or LINES. - + - Clear the current render buffer. + Index of display that the event belongs to. - 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. + Is the current keypress a function key? (Read Only) - Should the depth buffer be cleared? - Camera to get projection parameters and skybox from. - + - Sets current vertex color. + Is this event a keyboard event? (Read Only) - - + - End drawing 3D primitives. + Is this event a mouse event? (Read Only) - + - Compute GPU projection matrix from camera's projection matrix. + The raw key code for keyboard events. - - - + - Invalidate the internally cached render state. + Which modifier keys are held down. - + - Send a user-defined event to a native code plugin. + The mouse position. - 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. + Is the current keypress on the numeric keyboard? (Read Only) - User defined id to send to the callback. - Native code callback to queue for Unity's renderer to invoke. - + - Mode for Begin: draw lines. + Is Shift held down? (Read Only) - + - Load the identity matrix to the current modelview matrix. + The type of event. - + - Helper function to set up an ortho perspective transform. + Returns the current number of events that are stored in the event queue. + + Current number of events currently in the event queue. + - + - Setup a matrix for pixel-correct rendering. + Get a filtered event type for a given control ID. + The ID of the control you are querying from. - + - Setup a matrix for pixel-correct rendering. + Create a keyboard event. - - - - + - + - Load an arbitrary matrix to the current projection matrix. + Get the next queued [Event] from the event system. - + Next Event. - + - Sets current texture coordinate (v.x,v.y,v.z) to the actual texture unit. + Use this event. - - - + - Sets current texture coordinate (x,y) for the actual texture unit. + Types of modifier key that can be active during a keystroke event. - - - - + - Sets current texture coordinate (x,y,z) to the actual texture unit. + Alt key. - - - - - + - Multiplies the current modelview matrix with the one specified. + Caps lock key. - - + - Restores both projection and modelview matrices off the top of the matrix stack. + Command key (Mac). - + - Saves both projection and modelview matrices to the matrix stack. + Control key. - + - Mode for Begin: draw quads. + Function key. - + - Resolves the render target for subsequent operations sampling from it. + No modifier key pressed during a keystroke event. - + - Sets current texture coordinate (v.x,v.y,v.z) for all texture units. + Num lock key. - - + - Sets current texture coordinate (x,y) for all texture units. + Shift key. - - - + - Sets current texture coordinate (x,y,z) for all texture units. + THe mode that a listener is operating in. - - - - + - Mode for Begin: draw triangle strip. + The listener will bind to one argument bool functions. - + - Mode for Begin: draw triangles. + The listener will use the function binding specified by the even. - + - Submit a vertex. + The listener will bind to one argument float functions. - - + - Submit a vertex. + The listener will bind to one argument int functions. - - - - + - Set the rendering viewport. + The listener will bind to one argument Object functions. - - + - Gradient used for animating colors. + The listener will bind to one argument string functions. - + - All alpha keys defined in the gradient. + The listener will bind to zero argument functions. - + - All color keys defined in the gradient. + Zero argument delegate used by UnityEvents. - + - Create a new Gradient object. + One argument delegate used by UnityEvents. + - + - Calculate color at a given time. + Two argument delegate used by UnityEvents. - Time of the key (0 - 1). + + - + - Setup Gradient with an array of color keys and alpha keys. + Three argument delegate used by UnityEvents. - Color keys of the gradient (maximum 8 color keys). - Alpha keys of the gradient (maximum 8 alpha keys). + + + - + - Alpha key used by Gradient. + Four argument delegate used by UnityEvents. + + + + - + - Alpha channel of key. + A zero argument persistent callback that can be saved with the scene. - + - Time of the key (0 - 1). + Add a non persistent listener to the UnityEvent. + Callback function. - + - Gradient alpha key. + Constructor. - Alpha of key (0 - 1). - Time of the key (0 - 1). - + - Color key used by Gradient. + Invoke all registered callbacks (runtime and persistent). - + - Color of key. + Remove a non persistent listener from the UnityEvent. + Callback function. - + - Time of the key (0 - 1). + One argument version of UnityEvent. - + - Gradient color key. + Two argument version of UnityEvent. - Color of key. - Time of the key (0 - 1). - - + - Raw interface to Unity's drawing functions. + Three argument version of UnityEvent. - + - Currently active color buffer (Read Only). + Four argument version of UnityEvent. - + - Currently active depth/stencil buffer (Read Only). + Abstract base class for UnityEvents. - + - Copies source texture into destination render texture with a shader. + Get the number of registered persistent listeners. - Source texture. - Destination RenderTexture, or null to blit directly to screen. - 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. - + - Copies source texture into destination render texture with a shader. + Get the target method name of the listener at index index. - Source texture. - Destination RenderTexture, or null to blit directly to screen. - 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. + Index of the listener to query. - + - Copies source texture into destination render texture with a shader. + Get the target component of the listener at index index. - Source texture. - Destination RenderTexture, or null to blit directly to screen. - 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. + Index of the listener to query. - + - Copies source texture into destination, for multi-tap shader. + Given an object, function name, and a list of argument types; find the method that matches. - 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. + Object to search for the method. + Function name to search for. + Argument types for the function. - + - Clear random write targets for Shader Model 5.0 level pixel shaders. + Remove all non-persisent (ie created from script) listeners from the event. - + - Draw a mesh. + Modify the execution state of a persistent listener. - 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? - - + Index of the listener to query. + State to set. - + - Draw a mesh. + Controls the scope of UnityEvent callbacks. - 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? - - - + - Draw a mesh. + Callback is always issued. - 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? - - - + - Draw a mesh. + Callback is not issued. - 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? - - - + - Draw a mesh. + Callback is only issued in the Runtime and Editor playmode. - 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? - - - + - Draw a mesh. + Types of UnityGUI input and processing events. - 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? - - - + - Draw a mesh. + User has right-clicked (or control-clicked on the mac). - 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? - - - + - Draw a mesh. + Editor only: drag & drop operation exited. - 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? - - - + - Draw a mesh immediately. + Editor only: drag & drop operation performed. - 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. + Editor only: drag & drop operation updated. - 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. + Execute a special command (eg. copy & paste). - 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. + Event should be ignored. - 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. + A keyboard key was pressed. - - - - + - Draws a fully procedural geometry on the GPU. + A keyboard key was released. - Topology of the procedural geometry. - Buffer with draw arguments. - Offset where in the buffer the draw arguments are. - + - Draw a texture in screen coordinates. + A layout event. - 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. - + - Draw a texture in screen coordinates. + Mouse button was pressed. - 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. - + - Draw a texture in screen coordinates. + Mouse was dragged. - 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. - + - Draw a texture in screen coordinates. + Mouse entered a window (Editor views only). - 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. - + - Execute a command buffer. + Mouse left a window (Editor views only). - The buffer to execute. - + - Set random write target for Shader Model 5.0 level pixel shaders. + Mouse was moved (Editor views only). - Index of the random write target in the shader. - RenderTexture/ComputeBuffer to set as write target. - + - Set random write target for Shader Model 5.0 level pixel shaders. + Mouse button was released. - Index of the random write target in the shader. - RenderTexture/ComputeBuffer to set as write target. - + - Sets current render target. + A repaint event. One is sent every frame. - - - - - - - - + - Sets current render target. + The scroll wheel was moved. - - - - - - - - + - Sets current render target. + Already processed event. - - - - - - - - + - Sets current render target. + Validates a special command (e.g. copy & paste). - - - - - - - - + - Sets current render target. + Makes all instances of a script execute in edit mode. - - - - - - - - + - Sets current render target. + Playable that plays an AnimationClip. Can be used as an input to an AnimationPlayable. - - - - - - - - + - Sets current render target. + Applies Humanoid FootIK solver. - - - - - - - - + - Sets current render target. + AnimationClip played by this Playable. - - - - - - - - + - The GUI class is the interface for Unity's GUI with manual positioning. + The speed at which the AnimationClip is played. - + - Global tinting color for all background elements rendered by the GUI. + Playable used to mix AnimationPlayables when used in Layers. - + - Returns true if any controls changed the value of the input data. + Playable used to mix AnimationPlayables. - + - Global tinting color for the GUI. + Base class for all animation related Playable classes. - + - Tinting color for all text rendered by the GUI. + Extends PlayableGraph for Animation. - + - The sorting depth of the currently executing GUI behaviour. + Creates an AnimationClipPlayable in the PlayableGraph. + The PlayableGraph object. + The AnimationClip that will be added in the graph. + + A PlayableHandle on the created Playable. + - + - Is the GUI enabled? + Creates an AnimationMixerPlayable in the PlayableGraph. + The number of inputs that the mixer will update. + Set to true if you want the system to force a weight normalization of the inputs. If true, the sum of all the inputs weights will always be 1.0. + The PlayableGraph object. + + A PlayableHandle on the created Playable. + - + - The GUI transform matrix. + Creates an AnimationPlayableOutput in the PlayableGraph. When the AnimationPlayableOutput.sourcePlayable is set, the Animator will be playing the Playable. + The name of output. + The target that will Play the AnimationPlayableOutput.sourcePlayable. + The PlayableGraph object. + + A PlayableHandle on the created Playable. + - + - The global skin to use. + Creates an AnimatorControllerPlayable in the PlayableGraph. + The RuntimeAnimatorController that will be added in the graph. + The PlayableGraph object. + + A PlayableHandle on the created Playable. + - + - The tooltip of the control the mouse is currently over, or which has keyboard focus. (Read Only). + Destroys the PlayableOutput. + The output that will be destroyed. + The PlayableGraph object. - + - Begin a group. Must be matched with a call to EndGroup. + Returns the AnimationPlayableOutput at the given index. - 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. + The index of the AnimationPlayableOutput. + - + - Begin a group. Must be matched with a call to EndGroup. + Gets the number of AnimationPlayableOutput in the PlayableGraph. - 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. + Animation output for the PlayableGraph. Defines how a Playable is connected to an Animator. - 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. + The Playable that is bound to the output. - 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. + The Animator component that is bound to this output. - 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. + Used to pass custom data to ScriptPlayable.ProcessFrame. - 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. + The blend weight of the sourcePlayable to the animator. - 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. + Returns true if the PlayableOutput has been properly constructed by the PlayableGraph and has not been destroyed. - 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. + Used to compare against AnimationPlayableOutput instances to check their validity. - 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. + Implements high-level utility methods to simplify use of the Playable API with Animations. - 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. + + + + 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. - The modified scrollPosition. Feed this back into the variable you pass in, as shown in the example. + A handle to the newly-created AnimatorControllerPlayable. - + - Begin a scrolling view inside your GUI. + Creates a PlayableGraph to be played on the given Animator. An AnimationClipPlayable is also created for the given AnimationClip. - 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. + Target Animator. + The AnimationClip to create an AnimationClipPlayable for. + The created PlayableGraph. - The modified scrollPosition. Feed this back into the variable you pass in, as shown in the example. + A handle to the newly-created AnimationClipPlayable. - + - Begin a scrolling view inside your GUI. + Creates a PlayableGraph to be played on the given Animator. An AnimationMixerPlayable is also created. - 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. + Target Animator. + The input count for the AnimationMixerPlayable. + The created PlayableGraph. - The modified scrollPosition. Feed this back into the variable you pass in, as shown in the example. + A handle to the newly-created AnimationMixerPlayable. - + - Make a graphical box. + Playable that plays a RuntimeAnimatorController. Can be used as an input to an AnimationPlayable. - 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. - + - Make a graphical box. + See IAnimatorControllerPlayable.layerCount. - 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. - + - Make a graphical box. + See IAnimatorControllerPlayable.parameterCount. - 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. - + - Make a graphical box. + See IAnimatorControllerPlayable.CrossFade. - 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. + + + + + - + - Make a graphical box. + See IAnimatorControllerPlayable.CrossFade. - 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. + + + + + - + - Make a graphical box. + See IAnimatorControllerPlayable.CrossFadeInFixedTime. - 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. + See IAnimatorControllerPlayable.CrossFadeInFixedTime. - The identifier used when you created the window in the Window call. + + + + + - + - Bring a specific window to front of the floating windows. + See IAnimatorControllerPlayable.GetAnimatorTransitionInfo. - 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. + See IAnimatorControllerPlayable.GetBool. - 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. + See IAnimatorControllerPlayable.GetBool. - 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. + See IAnimatorControllerPlayable.GetCurrentAnimatorClipInfo. - 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. + See IAnimatorControllerPlayable.GetCurrentAnimatorClipInfo. - 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. + See IAnimatorControllerPlayable.GetCurrentAnimatorClipInfoCount. - 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. + See IAnimatorControllerPlayable.GetCurrentAnimatorStateInfo. - 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. + See IAnimatorControllerPlayable.GetFloat. - 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. + See IAnimatorControllerPlayable.GetFloat. + + - + - Draw a texture within a rectangle. + See IAnimatorControllerPlayable.GetInteger. - 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. + See IAnimatorControllerPlayable.GetInteger. - 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. + See IAnimatorControllerPlayable.GetLayerIndex. - 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. + See IAnimatorControllerPlayable.GetLayerName. - 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 with the given texture coordinates. Use this function for clipping or tiling the image within the given rectangle. + See IAnimatorControllerPlayable.GetLayerWeight. - 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. Use this function for clipping or tiling the image within the given rectangle. + See IAnimatorControllerPlayable.GetNextAnimatorClipInfo. - 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. + See IAnimatorControllerPlayable.GetNextAnimatorClipInfo. + + - + - Ends a scrollview started with a call to BeginScrollView. + See IAnimatorControllerPlayable.GetNextAnimatorClipInfoCount. - + - + - Ends a scrollview started with a call to BeginScrollView. + See IAnimatorControllerPlayable.GetNextAnimatorStateInfo. - + - + - Move keyboard focus to a named control. + See AnimatorController.GetParameter. - Name set using SetNextControlName. + - + - Make a window become the active window. + See IAnimatorControllerPlayable.HasState. - The identifier used when you created the window in the Window call. + + - + - Get the name of named control that has focus. + See IAnimatorControllerPlayable.IsInTransition. + - + - Disposable helper class for managing BeginGroup / EndGroup. + See IAnimatorControllerPlayable.IsParameterControlledByCurve. + + - + - Create a new GroupScope and begin the corresponding group. + See IAnimatorControllerPlayable.IsParameterControlledByCurve. - 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. + See IAnimatorControllerPlayable.Play. - 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. + See IAnimatorControllerPlayable.Play. - 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. + See IAnimatorControllerPlayable.PlayInFixedTime. - 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. + See IAnimatorControllerPlayable.PlayInFixedTime. - 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. + See IAnimatorControllerPlayable.ResetTrigger. - 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. + See IAnimatorControllerPlayable.ResetTrigger. - 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. + See IAnimatorControllerPlayable.SetBool. - 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. + See IAnimatorControllerPlayable.SetBool. - 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. + See IAnimatorControllerPlayable.SetFloat. - 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. + See IAnimatorControllerPlayable.SetFloat. - 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. + See IAnimatorControllerPlayable.SetInteger. - 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. + See IAnimatorControllerPlayable.SetInteger. - 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. + See IAnimatorControllerPlayable.SetLayerWeight. - 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. + See IAnimatorControllerPlayable.SetTrigger. - 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. + See IAnimatorControllerPlayable.SetTrigger. - 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. + Extends PlayableGraph for Audio. - 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. + This structure contains the frame information a Playable receives in Playable.PrepareFrame. - 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. + Time difference between this frame and the preceding frame. - 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. + The accumulated speed of the Playable during the PlayableGraph traversal. - 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. + The accumulated weight of the Playable during the PlayableGraph traversal. - 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. + Indicates the type of evaluation that caused PlayableGraph.PrepareFrame to be called. - 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. + The current frame identifier. - 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. + Indicates that the local time was explicitly set. - 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. + The weight of the current Playable. - 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. + Describes the cause for the evaluation of a PlayableGraph. - 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. + Indicates the graph was updated due to a call to PlayableGraph.Evaluate. - 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. + Indicates the graph was called by the runtime during normal playback due to PlayableGraph.Play being called. - 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. + Interface for objects that can control an AnimatorController. - 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. + The AnimatorController layer count. - 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. + The number of AnimatorControllerParameters used by the AnimatorController. - 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. + Creates a dynamic transition between the current state and the destination state. - 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. - + The name of the destination state. + The duration of the transition. Value is in source state normalized time. + Layer index containing the destination state. If no layer is specified or layer is -1, the first state that is found with the given name or hash will be played. + Start time of the current destination state. Value is in source state normalized time, should be between 0 and 1. If no explicit normalizedTime is specified or normalizedTime value is float.NegativeInfinity, the state will either be played from the start if it's not already playing, or will continue playing from its current time and no transition will happen. + The AnimatorState fullPathHash, nameHash or shortNameHash to play. Passing 0 will transition to self. - + - Make a button that is active as long as the user holds it down. + Creates a dynamic transition between the current state and the destination state. - 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. - + The name of the destination state. + The duration of the transition. Value is in source state normalized time. + Layer index containing the destination state. If no layer is specified or layer is -1, the first state that is found with the given name or hash will be played. + Start time of the current destination state. Value is in source state normalized time, should be between 0 and 1. If no explicit normalizedTime is specified or normalizedTime value is float.NegativeInfinity, the state will either be played from the start if it's not already playing, or will continue playing from its current time and no transition will happen. + The AnimatorState fullPathHash, nameHash or shortNameHash to play. Passing 0 will transition to self. - + - Make a button that is active as long as the user holds it down. + Same as IAnimatorControllerPlayable.CrossFade, but the duration and offset in the target state are in fixed time. - 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. - + The name of the destination state. + The duration of the transition. Value is in seconds. + Layer index containing the destination state. If no layer is specified or layer is -1, the first state that is found with the given name or hash will be played. + Start time of the current destination state. Value is in seconds. If no explicit fixedTime is specified or fixedTime value is float.NegativeInfinity, the state will either be played from the start if it's not already playing, or will continue playing from its current time and no transition will happen. + The AnimatorState fullPathHash, nameHash or shortNameHash to play. Passing 0 will transition to self. - + - Make a button that is active as long as the user holds it down. + Same as IAnimatorControllerPlayable.CrossFade, but the duration and offset in the target state are in fixed time. - 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. - + The name of the destination state. + The duration of the transition. Value is in seconds. + Layer index containing the destination state. If no layer is specified or layer is -1, the first state that is found with the given name or hash will be played. + Start time of the current destination state. Value is in seconds. If no explicit fixedTime is specified or fixedTime value is float.NegativeInfinity, the state will either be played from the start if it's not already playing, or will continue playing from its current time and no transition will happen. + The AnimatorState fullPathHash, nameHash or shortNameHash to play. Passing 0 will transition to self. - + - Scrolls all enclosing scrollviews so they try to make position visible. + Gets the Transition information on a specified AnimatorController layer. - + The layer's index. - + - Disposable helper class for managing BeginScrollView / EndScrollView. + See IAnimatorControllerPlayable.GetBool. + The name of the parameter. + The id of the parameter. The id is generated using Animator::StringToHash. - + - Whether this ScrollView should handle scroll wheel events. (default: true). + See IAnimatorControllerPlayable.GetBool. + The name of the parameter. + The id of the parameter. The id is generated using Animator::StringToHash. - + - The modified scrollPosition. Feed this back into the variable you pass in, as shown in the example. + Gets the list of AnimatorClipInfo currently played by the current state. + The layer's index. - + - Create a new ScrollViewScope and begin the corresponding ScrollView. + Gets the list of AnimatorClipInfo currently played by the current state. - 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. + The layer's index. + Array to receive results. - + - Create a new ScrollViewScope and begin the corresponding ScrollView. + This function should be used when you want to use the allocation-free method IAnimatorControllerPlayable.GetCurrentAnimatorClipInfo. - 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. + Layer's Index. + + Returns the count of AnimatorClipInfo for the current state. + - + - Create a new ScrollViewScope and begin the corresponding ScrollView. + Gets the current State information on a specified AnimatorController layer. - 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. + The layer's index. - + - Create a new ScrollViewScope and begin the corresponding ScrollView. + Gets the value of a float parameter. - 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. + The name of the parameter. + The id of the parameter. The id is generated using Animator::StringToHash. - + - Make a grid of buttons. + Gets the value of a float parameter. - 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. - + The name of the parameter. + The id of the parameter. The id is generated using Animator::StringToHash. - + - Make a grid of buttons. + Gets the value of an integer parameter. - 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. - + The name of the parameter. + The id of the parameter. The id is generated using Animator::StringToHash. - + - Make a grid of buttons. + Gets the value of an integer parameter. - 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. - + The name of the parameter. + The id of the parameter. The id is generated using Animator::StringToHash. - + - Make a grid of buttons. + Gets the index of the layer with specified name. - 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 layer's name. - The index of the selected button. + The index of the layer. - + - Make a grid of buttons. + Gets name of the layer. - 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. - + The layer's index. - + - Make a grid of buttons. + Gets the layer's current weight. - 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. - + The layer's index. - + - Set the name of the next control. + Gets the list of AnimatorClipInfo currently played by the next state. - + The layer's index. - + - Make a Multi-line text area where the user can edit a string. + Gets the list of AnimatorClipInfo currently played by the next state. - 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. - + The layer's index. + Array to receive results. - + - Make a Multi-line text area where the user can edit a string. + This function should be used when you want to use the allocation-free method IAnimatorControllerPlayable.GetNextAnimatorClipInfo. - 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. + Layer's Index. - The edited string. + Returns the count of AnimatorClipInfo for the next state. - + - Make a Multi-line text area where the user can edit a string. + Gets the next State information on a specified AnimatorController layer. - 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. - + The layer's index. - + - Make a Multi-line text area where the user can edit a string. + Read only access to the AnimatorControllerParameters used by the animator. - 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. - + The index of the parameter. - + - Make a single-line text field where the user can edit a string. + Returns true if the AnimatorState is present in the Animator's controller. For a state named State in sub state machine SubStateMachine of state machine StateMachine, the shortNameHash can be generated using Animator.StringToHash("State"), and the fullPathHash can be generated using Animator.StringToHash("StateMachine.SubStateMachine.State"). Typically, the name of the top level state machine is the name of the Layer. - 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. - + The layer's index. + The AnimatorState fullPathHash or shortNameHash. - + - Make a single-line text field where the user can edit a string. + Is the specified AnimatorController layer in a transition. - 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. - + The layer's index. - + - Make a single-line text field where the user can edit a string. + Returns true if a parameter is controlled by an additional curve on an animation. - 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 name of the parameter. + The id of the parameter. The id is generated using Animator::StringToHash. + + + + Returns true if a parameter is controlled by an additional curve on an animation. + + The name of the parameter. + The id of the parameter. The id is generated using Animator::StringToHash. + + + + Plays a state. + + The name of the state to play. + Layer index containing the destination state. If no layer is specified or layer is -1, the first state that is found with the given name or hash will be played. + Start time of the current destination state. Value is in normalized time. If no explicit normalizedTime is specified or value is float.NegativeInfinity, the state will either be played from the start if it's not already playing, or will continue playing from its current time. + The AnimatorState fullPathHash, nameHash or shortNameHash to play. Passing 0 will transition to self. + + + + Plays a state. + + The name of the state to play. + Layer index containing the destination state. If no layer is specified or layer is -1, the first state that is found with the given name or hash will be played. + Start time of the current destination state. Value is in normalized time. If no explicit normalizedTime is specified or value is float.NegativeInfinity, the state will either be played from the start if it's not already playing, or will continue playing from its current time. + The AnimatorState fullPathHash, nameHash or shortNameHash to play. Passing 0 will transition to self. + + + + Same as IAnimatorControllerPlayable.Play, but the offset in the target state is in fixed time. + + The name of the state to play. + Layer index containing the destination state. If no layer is specified or layer is -1, the first state that is found with the given name or hash will be played. + Start time of the current destination state. Value is in seconds. If no explicit fixedTime is specified or fixedTime value is float.NegativeInfinity, the state will either be played from the start if it's not already playing, or will continue playing from its current time. + The AnimatorState fullPathHash, nameHash or shortNameHash to play. Passing 0 will transition to self. + + + + Same as IAnimatorControllerPlayable.Play, but the offset in the target state is in fixed time. + + The name of the state to play. + Layer index containing the destination state. If no layer is specified or layer is -1, the first state that is found with the given name or hash will be played. + Start time of the current destination state. Value is in seconds. If no explicit fixedTime is specified or fixedTime value is float.NegativeInfinity, the state will either be played from the start if it's not already playing, or will continue playing from its current time. + The AnimatorState fullPathHash, nameHash or shortNameHash to play. Passing 0 will transition to self. + + + + Resets the trigger parameter to false. + + The name of the parameter. + The id of the parameter. The id is generated using Animator::StringToHash. + + + + Resets the trigger parameter to false. + + The name of the parameter. + The id of the parameter. The id is generated using Animator::StringToHash. + + + + See IAnimatorControllerPlayable.SetBool. + + The name of the parameter. + The new value for the parameter. + The id of the parameter. The id is generated using Animator::StringToHash. + + + + See IAnimatorControllerPlayable.SetBool. + + The name of the parameter. + The new value for the parameter. + The id of the parameter. The id is generated using Animator::StringToHash. + + + + Sets the value of a float parameter. + + The name of the parameter. + The new value for the parameter. + The id of the parameter. The id is generated using Animator::StringToHash. + + + + Sets the value of a float parameter. + + The name of the parameter. + The new value for the parameter. + The id of the parameter. The id is generated using Animator::StringToHash. + + + + Sets the value of an integer parameter. + + The name of the parameter. + The new value for the parameter. + The id of the parameter. The id is generated using Animator::StringToHash. + + + + Sets the value of an integer parameter. + + The name of the parameter. + The new value for the parameter. + The id of the parameter. The id is generated using Animator::StringToHash. + + + + Sets the layer's current weight. + + The layer's index. + The weight of the layer. + + + + Sets a trigger parameter to active. +A trigger parameter is a bool parameter that gets reset to false when it has been used in a transition. For state machines with multiple layers, the trigger will only get reset once all layers have been evaluated, so that the layers can synchronize their transitions on the same parameter. + + The name of the parameter. + The id of the parameter. The id is generated using Animator::StringToHash. + + + + Sets a trigger parameter to active. +A trigger parameter is a bool parameter that gets reset to false when it has been used in a transition. For state machines with multiple layers, the trigger will only get reset once all layers have been evaluated, so that the layers can synchronize their transitions on the same parameter. + + The name of the parameter. + The id of the parameter. The id is generated using Animator::StringToHash. + + + + Playables are customizable runtime objects that can be connected together in a tree to create complex behaviours. + + + + + Returns the PlayableHandle for this playable. + + + + + Returns true if the Playable is valid. A playable can be invalid if it was disposed. This is different from a Null playable. + + + + + The PlayableGraph is used to manage PlayableHandle creation, destruction and connections. + + + + + Indicates that a graph has completed its operations. + + + + + Returns the number of PlayableHandle owned by the Graph. + + + + + Returns the number of PlayableHandle owned by the Graph that have no connected outputs. + + + + + Gets the number of ScriptPlayableOutput in the PlayableGraph. + + + + + Connects two Playable instances, either by referencing the Playable instances themselves or by their PlayableHandles. + + 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. - The edited string. + Returns true if connection is successful. - + - Make a single-line text field where the user can edit a string. + Connects two Playable instances, either by referencing the Playable instances themselves or by their PlayableHandles. - 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 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. - The edited string. + Returns true if connection is successful. - + - Make an on/off toggle button. + Creates a generic ScriptPlayable mixer. - 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 number of input. - The new value of the button. + The created Playable. - + - Make an on/off toggle button. + Creates a PlayableGraph. - 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. + The created graph. - + - Make an on/off toggle button. + This method allows you to create custom Playable instances. - 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. + The created Playable. - + - Make an on/off toggle button. + Creates a ScriptPlayableOutput in the [PlayableGraph]]. + + The name of the output. + + + + Creates a ScriptPlayable in the PlayableGraph. - 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. + A PlayableHandle on the created Playable. - + + + Destroys the graph. + + + + + Destroys the PlayableOutput. + + The output to destroy. + + + + Destroys the PlayableOutput. + + The output to destroy. + + + + Destroys the Playable associated with this PlayableHandle. + + The playable to destroy. + + + + Recursively destroys the given Playable and all children connected to its inputs. + + The playable to destroy. + + + + Disconnects PlayableHandle. The connections determine the topology of the PlayableGraph and how its is evaluated. + + The source playabe or its handle. + The port used in the source playable. + + + + Disconnects PlayableHandle. The connections determine the topology of the PlayableGraph and how its 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. + + + + Returns the PlayableHandle with no output connections at the given index. + + The index of the root PlayableHandle. + + + + Returns the ScriptPlayableOutput at the given index. + + The index of the ScriptPlayableOutput. + + + + Returns true if the PlayableGraph has been properly constructed using PlayableGraph.CreateGraph and is not deleted. + + + + + Plays the graph. + + + + + Stops the graph, if it is playing. + + + + + Handle representing a Playable created in a PlayableGraph. The PlayableHandle implements all general usage Playable methods. + + + + + The duration of the Playable in seconds. + + + + + The PlayableGraph that created the playable. + + + + + Gets and Sets the number of inputs for the Playable. + + + + + A flag indicating that a playable has completed its operation. + + + + + Gets and Sets the number of outputs for the Playable. + + + + + When playing, the time will advance in the Playable during evaluation of the graph. + + + + + Modulates how time is incremented when the Playable is playing. + + + + + The current time of the Playable. + + + + + Destroys the Playable associated with this PlayableHandle. + + + + + Returns the PlayableHandle connected at the given input port index. + + The port index. + + + + Returns the weight of the Playable connected at the given input port index. + + The port index. + + + + Returns a Playable representation of the handle. + + + The Playable represented by this handle. + + + + + Returns a Playable representation of the handle. + + + The Playable represented by this handle. + + + + + Returns the PlayableHandle connected at the given ouput port index. + + The port index. + + + + Returns true if the Playable is properly constructed by the PlayableGraph and has not been destroyed. + + + + + Used to compare PlayableHandles. + + + + + Sets the weight of the Playable connected at the given input port index. + + The port index. + The weight. Should be between 0 and 1. + + + + Status of a Playable. + + + + + The Playable has been paused. Its local time will not advance. + + + + + The Playable is currently Playing. + + + + + Base class for all user-defined playables. + + + + + Called when the Playable is destroyed. + + + + + Called when the PlayableGraph this Playable is owned by starts playing. + + + + + Called when the PlayableGraph this Playable is owned by is stopped. + + + + + Override this method to perform custom operations when the PlayState changes. + + The current frame information. + The new PlayState. + + + + Called during evaluation of the PlayableGraph. + + Information about the current frame. + + + + The ProcessFrame is the stage at which your Playable should do its work. + + Information about the current frame. + Data that is set on the playable output userData. + + + + Script output for the Graph. ScriptPlayable can be used to write custom Playable that implement their own PrepareFrame callback. + + + + + The Playable that is bound to the output. + + + + + Used to pass custom data to ScriptPlayable.ProcessFrame. + + + + + Returns true if the PlayableOutput is properly constructed by the PlayableGraph and has not been destroyed. + + + + + Used to compare ScriptPlayableOutput. + + + + + Parameters controlling culling process in CullResults. + + + + + Layer mask used for culling. + + + + + World to clip space matrix. + + + + + Number of culling planes to use. + + + + + True if camera is orthographic (this affects LOD culling). + + + + + LODGroup culling parameters. + + + + + Camera position. + + + + + Visible reflection probes sorting options. + + + + + Realtime shadows distance. + + + + + Get a culling plane. + + Plane index (up to cullingPlaneCount). + + Culling plane. + + + + + Get per-layer culling distance. + + Game object layer index (0 to 31). + + Distance beyond which objects in this layer are culled. + + + + + Set a culling plane. + + Plane index (up to cullingPlaneCount). + Culling plane. + + + + Set per-layer culling distance. + + Game object layer index (0 to 31). + Distance beyond which objects in this layer are culled. + + + + Culling results (visible objects, lights, reflection probes). + + + + + Array of visible lights. + + + + + Array of visible reflection probes. + + + + + 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. + Result culling parameters. + + Flag indicating whether culling parameters are valid. + + + + + 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. + + + + + Flags controlling RenderLoop.DrawRenderers. + + + + + When set, enables dynamic batching. + + + + + When set, enables GPU instancing. + + + + + No flags are set. + + + + + Settings for RenderLoop.DrawRenderers. + + + + + Culling results to use. + + + + + Other flags controlling object rendering. + + + + + Which subset of visible objects to render. + + + + + What kind of per-object data to setup during rendering. + + + + + Which shader pass to use. + + + + + How to sort objects during rendering. + + + + + Create a draw settings struct. + + Culling results to use. + Camera to use. Camera's transparency sort mode is used to determine whether to use orthographic or distance based sorting. + Shader pass to use. + + + + Describes how to sort objects during rendering. + + + + + Camera position, used to determine distances to objects. + + + + + What kind of sorting to do while rendering. + + + + + Should orthographic sorting be used? + + + + + Camera view matrix, used to determine distances to objects. + + + + + Settings for RenderLoop.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. + + + + Describes which subset of visible objects to render. + + + + + Only render objects in the given layer mask. + + + + + Render objects that have material render queue smaller or equal to this. + + + + + Render objects that have material render queue larger or equal to this. + + + + + Default input filter: render all objects. + + + + + Set to render only opaque objects. + + + + + Set to render only transparent objects. + + + + + 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. + + + + + LODGroup culling parameters. + + + + + Rendering view height in pixels. + + + + + Camera position. + + + + + Camera's field of view. + + + + + Indicates whether camera is orthographic. + + + + + Orhographic camera size. + + + + + 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 reflection probe data. + + + + + Setup per-object light indices. + + + + + An asset that produces a specific IRenderPipeline. + + + + + Create a IRenderPipeline specific to this asset. + + + Created pipeline. + + + + + Destroys all cached data and created IRenderLoop's. + + + + + Create a IRenderPipeline specific to this asset. + + + Created pipeline. + + + + + Defines state and drawing commands used in a custom render pipelines. + + + + + Draw subset of visible objects. + + Specifies which set of visible objects to draw, and how to draw them. + + + + 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. + + + + Execute a custom graphics command buffer. + + Command buffer to execute. + + + + Setup camera specific global shader variables. + + Camera to setup shader variables for. + + + + Submit rendering loop for execution. + + + + + 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. + + + + + Sort by material render queue. + + + + + Sort by renderer sorting layer. + + + + + 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. + + + + + 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. + + + + + 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. + + + + + Option for 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. + + + + + 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. + + + + + 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. + + + + + Is the GameObject 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. A layer is in the range [0...31]. + + + + + 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 ParticleEmitter 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 deactivation the object. + + + + Utility class for common geometric functions. + + + + + Calculates a bounding box given an array of positions and a transformation matrix. + + + + + + + Calculates frustum planes. + + + + + + Calculates frustum planes. + + + + + + Returns true if bounds are inside the plane array. + + + + + + + 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. + + + + + + + + + Multiplies the current modelview matrix with 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. + + + + + Raw interface to Unity's drawing functions. + + + + + Currently active color buffer (Read Only). + + + + + 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. + Destination RenderTexture, or null to blit directly to screen. + 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. + + + + Copies source texture into destination render texture with a shader. + + Source texture. + Destination RenderTexture, or null to blit directly to screen. + 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. + + + + Copies source texture into destination render texture with a shader. + + Source texture. + Destination RenderTexture, or null to blit directly to screen. + 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. + + + + 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). + + + + 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). + + + + 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). + + + + Draw a mesh. + + The Mesh to draw. + Position of the mesh. + Rotation of the mesh. + Subset of the mesh to draw. + 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. + + + + Draw a mesh. + + The Mesh to draw. + Position of the mesh. + Rotation of the mesh. + Subset of the mesh to draw. + 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. + + + + Draw a mesh. + + The Mesh to draw. + Position of the mesh. + Rotation of the mesh. + Subset of the mesh to draw. + 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. + + + + Draw a mesh. + + The Mesh to draw. + Position of the mesh. + Rotation of the mesh. + Subset of the mesh to draw. + 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. + + + + Draw a mesh. + + The Mesh to draw. + Position of the mesh. + Rotation of the mesh. + Subset of the mesh to draw. + 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. + + + + Draw a mesh. + + The Mesh to draw. + Position of the mesh. + Rotation of the mesh. + Subset of the mesh to draw. + 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. + + + + Draw a mesh. + + The Mesh to draw. + Position of the mesh. + Rotation of the mesh. + Subset of the mesh to draw. + 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. + + + + Draw a mesh. + + The Mesh to draw. + Position of the mesh. + Rotation of the mesh. + Subset of the mesh to draw. + 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. + + + + Draw a mesh. + + The Mesh to draw. + Position of the mesh. + Rotation of the mesh. + Subset of the mesh to draw. + 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. + + + + Draw a mesh. + + The Mesh to draw. + Position of the mesh. + Rotation of the mesh. + Subset of the mesh to draw. + 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. + + + + Draw a mesh. + + The Mesh to draw. + Position of the mesh. + Rotation of the mesh. + Subset of the mesh to draw. + 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. + + + + Draw a mesh. + + The Mesh to draw. + Position of the mesh. + Rotation of the mesh. + Subset of the mesh to draw. + 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. + + + + 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 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. + + + + 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 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. + + + + 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. + + + + 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. + + + + 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. + + + + 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. + + + + 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. + + + + 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. + + + + 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. + + + 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. + + + 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. + + + 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. + + + 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. + + + 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. + + + The index of the selected button. + + + + + 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. The user clicks them and something happens immediately. + + 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. The user clicks them and something happens immediately. + + 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. The user clicks them and something happens immediately. + + 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. The user clicks them and something happens immediately. + + 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. The user clicks them and something happens immediately. + + 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. The user clicks them and something happens immediately. + + 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. + + + 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. + + + 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. + + + 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. + + + 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. + + + 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. + + + 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 pasteboard. + + + + + 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. + + + + + + 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) + + + + + Construct the Hash128. + + + + + + + + + Convert the input string to Hash128. + + + + + + Convert Hash128 to string. + + + + + 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. + + + + + A combination of not shown in the hierarchy, not saved to to scenes and not unloaded by The object will not be 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 lower 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? + + + + + 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. + + + + + 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. + + + + + 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 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. + + + + 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. + + + + + + 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. Think auto fire. + + + + + + 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. + + + + + 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. + + + + + 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, first 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 SE, first generation. + + + + + Yet unknown iPhone. + + + + + 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. + + + + + 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) + + + + + 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) + + + + + 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. + + + + + 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 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. + + + + + Parent class for joints to connect Rigidbody2D objects. + + + + + 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 Parenthesis key '('. + + + + + Left shift key. + + + + + Left Windows key. + + + + + Less than '<' key. + + + + + 'm' key. + + + + + Menu key. + + + + + Minus '-' key. + + + + + First (primary) mouse button. + + + + + Second (secondary) mouse button. + + + + + Third mouse button. + + + + + Fourth mouse button. + + + + + Fifth mouse button. + + + + + Sixth mouse button. + + + + + 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. + + + + + Period '.' 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 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. + + + + + '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. + + + + + Describes the tangent when approaching this point from the previous point in the curve. + + + + + Describes the tangent when leaving this point towards the next point in the curve. + + + + + TangentMode is deprecated. Use AnimationUtility.SetKeyLeftTangentMode or AnimationUtility.SetKeyRightTangentMode instead. + + + + + The time of the keyframe. + + + + + The value of the curve at keyframe. + + + + + Create a keyframe. + + + + + + + Create a keyframe. + + + + + + + + + LayerMask allow you to display the LayerMask popup menu in the inspector. + + + + + 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. + + + + + + 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. + + + + + 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). + + + + + This property describes what part of a light's contribution can be baked. + + + + + The range of the light. + + + + + How to render the light. + + + + + Shadow mapping constant bias. + + + + + The custom resolution of the shadow map. + + + + + Near plane value to use for shadow frustums. + + + + + Shadow mapping normal-based bias. + + + + + 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. + + + + 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. + + + + 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. + + + + + Non-directional, Directional or Directional 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. + + + + + 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. + + + + + 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 way a Light Probe Proxy Volume refreshes in the Player. + + + - Make an on/off toggle button. + Automatically detects updates in Light Probes and triggers an update of the Light Probe volume. - 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. + Causes Unity to update the Light Probe Proxy Volume every frame. - 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. + Use this option to indicate that the Light Probe Proxy Volume is never to be automatically updated by Unity. - 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. - - - The index of the selected button. - - + - Make a toolbar. + The resolution mode for generating a grid of interpolated Light Probes. - 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. - - - The index of the selected button. - - + - Make a toolbar. + 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. - 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. - - - The index of the selected button. - - + - Make a toolbar. + The custom mode allows you to specify the 3D grid resolution. - 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. - - - The index of the selected button. - - + - Make a toolbar. + Triggers an update of the Light Probe Proxy Volume. - 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. - - - The index of the selected button. - - + - Make a toolbar. + Stores light probes for the scene. - 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. - - - The index of the selected button. - - + - Remove focus from all windows. + Coefficients of baked light probes. - + - Make a vertical scrollbar. Scrollbars are what you use to scroll through a document. Most likely, you want to use scrollViews instead. + The number of cells space is divided into (Read Only). - 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. + The number of light probes (Read Only). - 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. + Positions of the baked light probes (Read Only). - 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. + Returns an interpolated probe for the given position for both realtime and baked light probes combined. - 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. + How the Light is rendered. - 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. + Automatically choose the render mode. - 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. + Force the Light to be a pixel light. - 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. + Force the Light to be a vertex light. - 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. + Shadow casting options for a Light. - 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. + Cast "hard" shadows (with no shadow filtering). - 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). + Do not cast shadows (default). - - + - The contents of a GUI element. + Cast "soft" shadows (with 4x PCF filtering). - + - The icon image contained. + The type of a Light. - + - Shorthand for empty content. + The light is an area light. It affects only lightmaps and lightprobes. - + - The text contained. + The light is a directional light. - + - The tooltip of this element. + The light is a point light. - + - Constructor for GUIContent in all shapes and sizes. + The light is a spot light. - + - Build a GUIContent object containing only text. + Control the direction lines face, when using the LineRenderer or TrailRenderer. - - + - Build a GUIContent object containing only an image. + Lines face the direction of the Transform Component. - - + - Build a GUIContent object containing both text and an image. + Lines face the camera. - - - + - Build a GUIContent containing some text. When the user hovers the mouse over it, the global GUI.tooltip is set to the tooltip. + The line renderer is used to draw free-floating lines in 3D space. - - - + - Build a GUIContent containing an image. When the user hovers the mouse over it, the global GUI.tooltip is set to the tooltip. + Select whether the line will face the camera, or the orientation of the Transform Component. - - - + - 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. + Set the color gradient describing the color of the line at various points along its length. - - - - + - Build a GUIContent as a copy of another GUIContent. + Set the color at the end of the line. - - + - Base class for images & text strings displayed in a GUI. + Set the width at the end of the line. - + - Returns bounding rectangle of GUIElement in screen coordinates. + Connect the start and end positions of the line together to form a continuous loop. - - + - Returns bounding rectangle of GUIElement in screen coordinates. + Set this to a value greater than 0, to get rounded corners on each end of the line. - - + - Is a point on screen inside the element? + Set this to a value greater than 0, to get rounded corners between each segment of the line. - - - + - Is a point on screen inside the element? + Set the number of line segments. - - - + - Component added to a camera to make it render 2D GUI elements. + Set the number of line segments. - + - Get the GUI element at a specific screen position. + Set the color at the start of the line. - - + - The GUILayout class is the interface for Unity gui with automatic layout. + Set the width at the start of the line. - + - Disposable helper class for managing BeginArea / EndArea. + Choose whether the U coordinate of the line texture is tiled or stretched. - + - Create a new AreaScope and begin the corresponding Area. + If enabled, the lines are defined in world space. - 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. + Set the curve describing the width of the line at various points along its length. - 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. + Set an overall multiplier that is applied to the LineRenderer.widthCurve to get the final width of the line. - 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. + Get the position of a vertex in the line. - 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. - + The index of the position to retrieve. + + The position at the specified index in the array. + - + - Create a new AreaScope and begin the corresponding Area. + Get the positions of all vertices in the line. - 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. - + The array of positions to retrieve. The array passed should be of at least numPositions in size. + + How many positions were actually stored in the output array. + - + - Create a new AreaScope and begin the corresponding Area. + Set the line color at the start and at the end. - 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. + Set the position of a vertex in the line. - 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. - + Which position to set. + The new position. - + - Begin a GUILayout block of GUI controls in a fixed screen area. + Set the positions of all vertices in the line. - 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. - + The array of positions to set. - + - Begin a GUILayout block of GUI controls in a fixed screen area. + Set the number of line segments. - 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. + Set the line width at the start and at the end. - 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. + Choose how textures are applied to Lines and Trails. - 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. + Map the texture once along the entire length of the line, assuming all vertices are evenly spaced. - 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. + Repeat the texture along the line, repeating at a rate of once per line segment. To adjust the tiling rate, use Material.SetTextureScale. - 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. + Map the texture once along the entire length of the line. - 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. + Repeat the texture along the line, based on its length in world units. To set the tiling rate, use Material.SetTextureScale. - 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. + Structure describing device location. - 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. + Geographical device location altitude. - 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. + Horizontal accuracy of the location. - 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. + Geographical device location latitude. - 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. - + + + Geographical device location latitude. + + + + + Timestamp (in seconds since 1970) when location was last time updated. + + + - Begin a Horizontal control group. + Vertical accuracy of the location. - 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. + Interface into location functionality. - 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. + Specifies whether location service is enabled in user settings. - 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. + Last measured device geographical location. - 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. + Returns location service status. - 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. + Starts location service updates. Last location coordinates could be. - 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. + Starts location service updates. Last location coordinates could be. - 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. + Starts location service updates. Last location coordinates could be. - 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. + Stops location service updates. This could be useful for saving battery life. - 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. + Describes location service status. - 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. + Location service failed (user denied access to location service). - 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. + Location service is initializing, some time later it will switch to. - 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. + Location service is running and locations could be queried. - 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. + Location service is stopped. - 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. + Structure for building a LOD for passing to the SetLODs function. - 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. + Width of the cross-fade transition zone (proportion to the current LOD's whole length) [0-1]. Only used if it's not animated. - 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. + List of renderers for this LOD level. - 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. + The screen relative height to use for the transition [0-1]. - 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. + Construct a LOD. - 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. + The screen relative height to use for the transition [0-1]. + An array of renderers to use for this LOD level. - + - Make a single press button. The user clicks them and something happens immediately. + 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. - 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. The user clicks them and something happens immediately. + 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. - 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. The user clicks them and something happens immediately. + Indicates the LOD fading is turned 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. - - true when the users clicks the button. - - + - Make a single press button. The user clicks them and something happens immediately. + 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. - 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. The user clicks them and something happens immediately. + LODGroup lets you group multiple Renderers into LOD levels. - 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. The user clicks them and something happens immediately. + Specify if the cross-fading should be animated by time. The animation duration is specified globally as crossFadeAnimationDuration. - 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. + The cross-fading animation duration in seconds. ArgumentException will be thrown if it is set to zero or a negative value. - + - Close a group started with BeginHorizontal. + Enable / Disable the LODGroup - Disabling will turn off all renderers. - + - End a scroll view begun with a call to BeginScrollView. + The LOD fade mode used. - + - Close a group started with BeginVertical. + The local reference point against which the LOD distance is calculated. - + - Option passed to a control to allow or disallow vertical expansion. + The number of LOD levels. - - + - Option passed to a control to allow or disallow horizontal expansion. + The size of the LOD object in local space. - - + - Insert a flexible space element. + + The LOD level to use. Passing index < 0 will return to standard LOD processing. - + - Option passed to a control to give it an absolute height. + Returns the array of LODs. - + + The LOD array. + - + - Disposable helper class for managing BeginHorizontal / EndHorizontal. + Recalculate the bounding region for the LODGroup (Relatively slow, do not call often). - + - Create a new HorizontalScope and begin the corresponding horizontal group. + Set the LODs for the LOD group. This will remove any existing LODs configured on the LODGroup. - 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. + The LODs to use for this group. - + - Create a new HorizontalScope and begin the corresponding horizontal group. + Initializes a new instance of the Logger. - 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. + To selective enable debug log message. - 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. + To runtime toggle debug logging [ON/OFF]. - 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. + Set Logger.ILogHandler. - 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. + Create a custom Logger. - 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. - + Pass in default log handler or custom log handler. - + - Make a horizontal scrollbar. + Check logging is enabled based on the LogType. - 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 type of the log message. - The modified value. This can be changed by the user by dragging the scrollbar, or clicking the arrows at the end. + Retrun true in case logs of LogType will be logged otherwise returns false. - + - A horizontal slider the user can drag to change a value between a min and a max. + Logs message to the Unity Console using default logger. - 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. - + 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 horizontal slider the user can drag to change a value between a min and a max. + Logs message to the Unity Console using default logger. - 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. - + 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. - + - Make an auto-layout label. + Logs message to the Unity Console using default logger. - 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. + 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. - + - Make an auto-layout label. + Logs message to the Unity Console using default logger. - 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. + 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. - + - Make an auto-layout label. + Logs message to the Unity Console using default logger. - 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. + 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. - + - Make an auto-layout label. + Logs message to the Unity Console using default logger. - 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. + 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. - + - Make an auto-layout label. + Logs message to the Unity Console using default logger. - 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. + 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. - + - Make an auto-layout label. + A variant of Logger.Log that logs an error message. - 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. + 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. - + - Option passed to a control to specify a maximum height. + 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. - + - Option passed to a control to specify a maximum width. + A variant of Logger.Log that logs an exception message. - + Runtime Exception. + Object to which the message applies. - + - Option passed to a control to specify a minimum height. + A variant of Logger.Log that logs an exception message. - + Runtime Exception. + Object to which the message applies. - + - Option passed to a control to specify a minimum width. - + Logs a formatted message. - + The type of the log message. + Object to which the message applies. + A composite format string. + Format arguments. - + - Make a text field where the user can enter a password. + Logs a formatted message. - 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. - + The type of the log message. + Object to which the message applies. + A composite format string. + Format arguments. - + - Make a text field where the user can enter a password. + A variant of Logger.Log that logs an warning message. - 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. - + 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. - + - Make a text field where the user can enter a password. + A variant of Logger.Log that logs an warning message. - 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. - + 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. - + - Make a text field where the user can enter a password. + The type of the log message in Debug.logger.Log or delegate registered with Application.RegisterLogCallback. - 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. + LogType used for Asserts. (These could also indicate an error inside Unity itself.) - 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. + LogType used for Errors. - 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. + LogType used for Exceptions. - 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. + LogType used for regular log messages. - 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. + LogType used for Warnings. - 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. + The Master Server is used to make matchmaking between servers and clients easy. - 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. + Report this machine as a dedicated server. - + - Whether this ScrollView should handle scroll wheel events. (default: true). + The IP address of the master server. - + - The modified scrollPosition. Feed this back into the variable you pass in, as shown in the example. + The connection port of the master server. - + - Create a new ScrollViewScope and begin the corresponding ScrollView. + Set the minimum update rate for master server host information update. - 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. + Clear the host list which was received by MasterServer.PollHostList. - 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. + Check for the latest host list received by using MasterServer.RequestHostList. - 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. + Register this server on the master server. - 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. + Register this server on the master server. - 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. + Request a host list from the master server. - 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. + Unregister this server from the master server. - 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. + Describes status messages from the master server as returned in MonoBehaviour.OnMasterServerEvent|OnMasterServerEvent. - 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. + Received a host list from the master server. - 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. + Registration failed because an empty game name was given. - 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. + Registration failed because an empty game type was given. - 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. + Registration failed because no server is running. - 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. + Registration to master server succeeded, received confirmation. - - + - Make a multi-line text field where the user can edit a string. + To specify position and rotation weight mask for Animator::MatchTarget. - 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. + Position XYZ weight. - 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. + Rotation weight. - 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. + MatchTargetWeightMask contructor. - 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. - + Position XYZ weight. + Rotation weight. - + - Make a single-line text field where the user can edit a string. + The material class. - 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. + The main material's color. - 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. + Gets and sets whether GPU instancing is enabled for this material. - 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. - + Defines how the material should interact with lightmaps and lightprobes. +

    UTbC8oNuMvkMJFx+JCp8;5r0pCzcb)(A^e>Q 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 path to the component. Where in the component menu to add the new item. - +

%T{P{yp0EIli*_#(vJ? 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

- + - Make an on/off toggle button. + The material's texture. - 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. + The texture offset of the main texture. - 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. + The texture scale of the main texture. - 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. + How many passes are in this material (Read Only). - 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. + Render queue of this material. - 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. + The shader used by the material. - 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. + Additional shader keywords set by this material. - 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. - - - The index of the selected button. - - + - Make a toolbar. + Copy properties from other material into this material. - 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. - - - 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. - - - The index of the selected button. - + - + - Make a toolbar. + Create a temporary Material. - 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. - - - The index of the selected button. - + Create a material with a given Shader. + Create a material by copying all properties from another material. - + - Make a toolbar. + Create a temporary Material. - 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. - - - The index of the selected button. - + Create a material with a given Shader. + Create a material by copying all properties from another material. - + - Make a toolbar. + Unset a shader keyword. - 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. - - - The index of the selected button. - + - + - Disposable helper class for managing BeginVertical / EndVertical. + Sets a shader keyword that is enabled by this material. + - + - Create a new VerticalScope and begin the corresponding vertical group. + Returns the index of the pass passName. - 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. + Get a named color value. - 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. + The name ID of the property retrieved by Shader.PropertyToID. + The name of the property. - + - Create a new VerticalScope and begin the corresponding vertical group. + Get a named color value. - 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. + The name ID of the property retrieved by Shader.PropertyToID. + The name of the property. - + - Create a new VerticalScope and begin the corresponding vertical group. + Get a named color array. - 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. + The name ID of the property retrieved by Shader.PropertyToID. + The name of the property. - + - Create a new VerticalScope and begin the corresponding vertical group. + Get a named color array. - 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. + The name ID of the property retrieved by Shader.PropertyToID. + The name of the property. - + - Make a vertical scrollbar. + Fetch a named color array into a list. - 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. - + The name ID of the property retrieved by Shader.PropertyToID. + The name of the property. + The list to hold the returned array. - + - Make a vertical scrollbar. + Fetch a named color array into a list. - 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. - + The name ID of the property retrieved by Shader.PropertyToID. + The name of the property. + The list to hold the returned array. - + - A vertical slider the user can drag to change a value between a min and a max. + Get a named float value. - 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. - + The name ID of the property retrieved by Shader.PropertyToID. + The name of the property. - + - A vertical slider the user can drag to change a value between a min and a max. + Get a named float value. - 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. - + The name ID of the property retrieved by Shader.PropertyToID. + The name of the property. - + - Option passed to a control to give it an absolute width. + Get a named float array. - + The name of the property. + The name ID of the property retrieved by Shader.PropertyToID. - + - Make a popup window that layouts its contents automatically. + Get a named float array. - 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. - + The name of the property. + The name ID of the property retrieved by Shader.PropertyToID. - + - Make a popup window that layouts its contents automatically. + Fetch a named float array into a list. - 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. - + The name ID of the property retrieved by Shader.PropertyToID. + The name of the property. + The list to hold the returned array. - + - Make a popup window that layouts its contents automatically. + Fetch a named float array into a list. - 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. - + The name ID of the property retrieved by Shader.PropertyToID. + The name of the property. + The list to hold the returned array. - + - Make a popup window that layouts its contents automatically. + Get a named integer value. - 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. - + The name ID of the property retrieved by Shader.PropertyToID. + The name of the property. - + - Make a popup window that layouts its contents automatically. + Get a named integer value. - 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. - + The name ID of the property retrieved by Shader.PropertyToID. + The name of the property. - + - Make a popup window that layouts its contents automatically. + Get a named matrix value from the shader. - 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. - + The name ID of the property retrieved by Shader.PropertyToID. + The name of the property. - + - 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. + Get a named matrix value from the shader. + The name ID of the property retrieved by Shader.PropertyToID. + The name of the property. - + - Utility functions for implementing and extending the GUILayout class. + Get a named matrix array. + The name of the property. + The name ID of the property retrieved by Shader.PropertyToID. - + - Reserve layout space for a rectangle with a specific aspect ratio. + Get a named matrix array. - 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. - + The name of the property. + The name ID of the property retrieved by Shader.PropertyToID. - + - Reserve layout space for a rectangle with a specific aspect ratio. + Fetch a named matrix array into a list. - 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. - + The name of the property. + The name ID of the property retrieved by Shader.PropertyToID. + The list to hold the returned array. - + - Reserve layout space for a rectangle with a specific aspect ratio. + Fetch a named matrix array into a list. - 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. - + The name of the property. + The name ID of the property retrieved by Shader.PropertyToID. + The list to hold the returned array. - + - Reserve layout space for a rectangle with a specific aspect ratio. + Returns the name of the shader pass at index pass. - 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. + Checks whether a given Shader pass is enabled on this Material. + Shader pass name (case insensitive). - The last used rectangle. + True if the Shader pass is enabled. - + - Reserve layout space for a rectangle for displaying some contents with a specific style. + Get the value of material's shader tag. - 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. + Get the value of material's shader tag. - 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. + Get a named texture. - 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. - + The name ID of the property retrieved by Shader.PropertyToID. + The name of the property. - + - Reserve layout space for a rectangle with a fixed content area. + Get a named texture. - 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. - + The name ID of the property retrieved by Shader.PropertyToID. + The name of the property. - + - Reserve layout space for a rectangle with a fixed content area. + Gets the placement offset of texture propertyName. - 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. - + The name of the property. - + - Reserve layout space for a rectangle with a fixed content area. + Gets the placement scale of texture propertyName. - 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. - + The name of the property. - + - Reserve layout space for a flexible rect. + Get a named vector value. - 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. - + The name ID of the property retrieved by Shader.PropertyToID. + The name of the property. - + - Reserve layout space for a flexible rect. + Get a named vector value. - 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. - + The name ID of the property retrieved by Shader.PropertyToID. + The name of the property. - + - Reserve layout space for a flexible rect. + Get a named vector array. - 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. - + The name of the property. + The name ID of the property retrieved by Shader.PropertyToID. - + - Reserve layout space for a flexible rect. + Get a named vector array. - 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. - + The name of the property. + The name ID of the property retrieved by Shader.PropertyToID. - + - General settings for how the GUI behaves. + 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. - + - The color of the cursor in text fields. + 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. - + - The speed of text field cursor flashes. + Checks if material's shader has a property of a given name. + + - + - Should double-clicking select words in text fields. + Checks if material's shader has a property of a given name. + + - + - The color of the selection rect in text fields. + Is the shader keyword enabled on this material? + - + - Should triple-clicking select whole text in text fields. + Interpolate properties between two materials. + + + - + - Defines how GUI looks and behaves. + Sets a named ComputeBuffer value. + Property name ID, use Shader.PropertyToID to get it. + Property name. + The ComputeBuffer value to set. - + - Style used by default for GUI.Box controls. + Sets a named ComputeBuffer value. + Property name ID, use Shader.PropertyToID to get it. + Property name. + The ComputeBuffer value to set. - + - Style used by default for GUI.Button controls. + Sets a named color value. + Property name ID, use Shader.PropertyToID to get it. + Property name, e.g. "_Color". + Color value to set. - + - Array of GUI styles for specific needs. + Sets a named color value. + Property name ID, use Shader.PropertyToID to get it. + Property name, e.g. "_Color". + Color value to set. - + - The default font to use for all styles. + Sets a color array property. + Property name. + Property name ID, use Shader.PropertyToID to get it. + Array of values to set. - + - Style used by default for the background part of GUI.HorizontalScrollbar controls. + Sets a color array property. + Property name. + Property name ID, use Shader.PropertyToID to get it. + Array of values to set. - + - Style used by default for the left button on GUI.HorizontalScrollbar controls. + Sets a color array property. + Property name. + Property name ID, use Shader.PropertyToID to get it. + Array of values to set. - + - Style used by default for the right button on GUI.HorizontalScrollbar controls. + Sets a color array property. + Property name. + Property name ID, use Shader.PropertyToID to get it. + Array of values to set. - + - Style used by default for the thumb that is dragged in GUI.HorizontalScrollbar controls. + Sets a named float value. + Property name ID, use Shader.PropertyToID to get it. + Float value to set. + Property name, e.g. "_Glossiness". - + - Style used by default for the background part of GUI.HorizontalSlider controls. + Sets a named float value. + Property name ID, use Shader.PropertyToID to get it. + Float value to set. + Property name, e.g. "_Glossiness". - + - Style used by default for the thumb that is dragged in GUI.HorizontalSlider controls. + Sets a float array property. + Property name. + Property name ID. Use Shader.PropertyToID to get this ID. + Array of values to set. - + - Style used by default for GUI.Label controls. + Sets a float array property. + Property name. + Property name ID. Use Shader.PropertyToID to get this ID. + Array of values to set. - + - Style used by default for the background of ScrollView controls (see GUI.BeginScrollView). + Sets a float array property. + Property name. + Property name ID. Use Shader.PropertyToID to get this ID. + Array of values to set. - + - Generic settings for how controls should behave with this skin. + Sets a float array property. + Property name. + Property name ID. Use Shader.PropertyToID to get this ID. + Array of values to set. - + - Style used by default for GUI.TextArea controls. + Sets a named integer value. + Property name ID, use Shader.PropertyToID to get it. + Integer value to set. + Property name, e.g. "_SrcBlend". - + - Style used by default for GUI.TextField controls. + Sets a named integer value. + Property name ID, use Shader.PropertyToID to get it. + Integer value to set. + Property name, e.g. "_SrcBlend". - + - Style used by default for GUI.Toggle controls. + 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. - + - Style used by default for the background part of GUI.VerticalScrollbar controls. + 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. - + - Style used by default for the down button on GUI.VerticalScrollbar controls. + Sets a matrix array property. + Property name. + Array of values to set. + Property name ID, use Shader.PropertyToID to get it. - + - Style used by default for the thumb that is dragged in GUI.VerticalScrollbar controls. + Sets a matrix array property. + Property name. + Array of values to set. + Property name ID, use Shader.PropertyToID to get it. - + - Style used by default for the up button on GUI.VerticalScrollbar controls. + Sets a matrix array property. + Property name. + Array of values to set. + Property name ID, use Shader.PropertyToID to get it. - + - Style used by default for the background part of GUI.VerticalSlider controls. + Sets a matrix array property. + Property name. + Array of values to set. + Property name ID, use Shader.PropertyToID to get it. - + - Style used by default for the thumb that is dragged in GUI.VerticalSlider controls. + 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. - + - Style used by default for Window controls (SA GUI.Window). + Activate the given pass for rendering. + Shader pass number to setup. + + If false is returned, no rendering should be done. + - + - Try to search for a GUIStyle. This functions returns NULL and does not give an error. + 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. - + - Get a named GUIStyle. + Sets a named texture. - + Property name ID, use Shader.PropertyToID to get it. + Property name, e.g. "_MainTex". + Texture to set. - + - Styling information for GUI elements. + Sets a named texture. + Property name ID, use Shader.PropertyToID to get it. + Property name, e.g. "_MainTex". + Texture to set. - + - Rendering settings for when the control is pressed down. + Sets the placement offset of texture propertyName. + Property name ID, use Shader.PropertyToID to get it. + Property name, for example: "_MainTex". + Texture placement offset. - + - Text alignment. + Sets the placement offset of texture propertyName. + Property name ID, use Shader.PropertyToID to get it. + Property name, for example: "_MainTex". + Texture placement offset. - + - The borders of all background images. + Sets the placement scale of texture propertyName. + Property name ID, use Shader.PropertyToID to get it. + Property name, e.g. "_MainTex". + Texture placement scale. - + - What to do when the contents to be rendered is too large to fit within the area given. + Sets the placement scale of texture propertyName. + Property name ID, use Shader.PropertyToID to get it. + Property name, e.g. "_MainTex". + Texture placement scale. - + - Pixel offset to apply to the content of this GUIstyle. + Sets a named vector value. + Property name ID, use Shader.PropertyToID to get it. + Property name, e.g. "_WaveAndDistance". + Vector value to set. - + - If non-0, any GUI elements rendered with this style will have the height specified here. + Sets a named vector value. + Property name ID, use Shader.PropertyToID to get it. + Property name, e.g. "_WaveAndDistance". + Vector value to set. - + - If non-0, any GUI elements rendered with this style will have the width specified here. + Sets a vector array property. + Property name. + Array of values to set. + Property name ID, use Shader.PropertyToID to get it. - + - Rendering settings for when the element has keyboard focus. + Sets a vector array property. + Property name. + Array of values to set. + Property name ID, use Shader.PropertyToID to get it. - + - The font to use for rendering. If null, the default font for the current GUISkin is used instead. + Sets a vector array property. + Property name. + Array of values to set. + Property name ID, use Shader.PropertyToID to get it. - + - The font size to use (for dynamic fonts). + Sets a vector array property. + Property name. + Array of values to set. + Property name ID, use Shader.PropertyToID to get it. - + - The font style to use (for dynamic fonts). + How the material interacts with lightmaps and lightprobes. - + - Rendering settings for when the mouse is hovering over the control. + Helper Mask to be used to query the enum only based on whether realtime GI or baked GI is set, ignoring all other bits. - + - How image and text of the GUIContent is combined. + The emissive lighting affects baked Global Illumination. It emits lighting into baked lightmaps and baked lightprobes. - + - The height of one line of text with this style, measured in pixels. (Read Only) + 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 margins between elements rendered in this style and any other GUI elements. + The emissive lighting does not affect Global Illumination at all. - + - The name of this GUIStyle. Used for getting them based on name. + The emissive lighting will affect realtime Global Illumination. It emits lighting into realtime lightmaps and realtime lightprobes. - + - Shortcut for an empty GUIStyle. + A block of material values to apply. - + - Rendering settings for when the component is displayed normally. + Is the material property block empty? (Read Only) - + - Rendering settings for when the element is turned on and pressed down. + Clear material property values. - + - Rendering settings for when the element has keyboard and is turned on. + Get a float from the property block. + + - + - Rendering settings for when the control is turned on and the mouse is hovering it. + Get a float from the property block. + + - + - Rendering settings for when the control is turned on. + Get a float array from the property block. + + - + - Extra space to be added to the background image. + Get a float array from the property block. + + - + - Space from the edge of GUIStyle to the start of the contents. + Fetch a float array from the property block into a list. + The list to hold the returned array. + + - + - Enable HTML-style tags for Text Formatting Markup. + Fetch a float array from the property block into a list. + The list to hold the returned array. + + - + - Can GUI elements of this style be stretched vertically for better layout? + Get a matrix from the property block. + + - + - Can GUI elements of this style be stretched horizontally for better layouting? + Get a matrix from the property block. + + - + - Should the text be wordwrapped? + Get a matrix array from the property block. + + - + - How tall this element will be when rendered with content and a specific width. + Get a matrix array from the property block. - - + + - + - Calculate the minimum and maximum widths for this style rendered with content. + Fetch a matrix array from the property block into a list. - - - + The list to hold the returned array. + + - + - Calculate the size of an element formatted with this style, and a given space to content. + Fetch a matrix array from the property block into a list. - + The list to hold the returned array. + + - + - Calculate the size of a some content if it is rendered with this style. + Get a texture from the property block. - + + - + - Constructor for empty GUIStyle. + Get a texture from the property block. + + - + - Constructs GUIStyle identical to given other GUIStyle. + Get a vector from the property block. - + + - + - Draw this GUIStyle on to the screen, internal version. + Get a vector from the property block. - - - - - + + - + - Draw the GUIStyle with a text string inside. + Get a vector array from the property block. - - - - - - + + - + - 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. + Get a vector array from the property block. - - - - - - + + - + - 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. + Fetch a vector array from the property block into a list. - - - - - - - + The list to hold the returned array. + + - + - 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. + Fetch a vector array from the property block into a list. - - - - - - - + The list to hold the returned array. + + - + - 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. + Set a ComputeBuffer property. - - - - - - - + The name of the property. + The name ID of the property retrieved by Shader.PropertyToID. + The ComputeBuffer to set. - + - Draw this GUIStyle with selected content. + Set a ComputeBuffer property. - - - - + The name of the property. + The name ID of the property retrieved by Shader.PropertyToID. + The ComputeBuffer to set. - + - Draw this GUIStyle with selected content. + Set a color property. - - - - - + The name of the property. + The name ID of the property retrieved by Shader.PropertyToID. + The Color value to set. - + - Get the pixel position of a given string index. + Set a color property. - - - + The name of the property. + The name ID of the property retrieved by Shader.PropertyToID. + The Color value to set. - + - Get the cursor position (indexing into contents.text) when the user clicked at cursorPixelPosition. + Set a float property. - - - + The name of the property. + The name ID of the property retrieved by Shader.PropertyToID. + The float value to set. - + - Get a named GUI style from the current skin. + Set a float property. - + The name of the property. + The name ID of the property retrieved by Shader.PropertyToID. + The float value to set. - + - Specialized values for the given states used by GUIStyle objects. + Set a float array property. + The name of the property. + The name ID of the property retrieved by Shader.PropertyToID. + The array to set. - + - The background image used by GUI elements in this given state. + Set a float array property. + The name of the property. + The name ID of the property retrieved by Shader.PropertyToID. + The array to set. - + - The text color used by GUI elements in this state. + Set a float array property. + The name of the property. + The name ID of the property retrieved by Shader.PropertyToID. + The array to set. - + - Allows to control for which display the OnGUI is called. + Set a float array property. + The name of the property. + The name ID of the property retrieved by Shader.PropertyToID. + The array to set. - + - Default constructor initializes the attribute for OnGUI to be called for all available displays. + Set a matrix property. - Display index. - Display index. - Display index list. + The name of the property. + The name ID of the property retrieved by Shader.PropertyToID. + The matrix value to set. - + - Default constructor initializes the attribute for OnGUI to be called for all available displays. + Set a matrix property. - Display index. - Display index. - Display index list. + The name of the property. + The name ID of the property retrieved by Shader.PropertyToID. + The matrix value to set. - + - Default constructor initializes the attribute for OnGUI to be called for all available displays. + Set a matrix array property. - Display index. - Display index. - Display index list. + The name of the property. + The name ID of the property retrieved by Shader.PropertyToID. + The array to set. - + - Default constructor initializes the attribute for OnGUI to be called for all available displays. + Set a matrix array property. - Display index. - Display index. - Display index list. + The name of the property. + The name ID of the property retrieved by Shader.PropertyToID. + The array to set. - + - A text string displayed in a GUI. + Set a matrix array property. + The name of the property. + The name ID of the property retrieved by Shader.PropertyToID. + The array to set. - + - The alignment of the text. + Set a matrix array property. + The name of the property. + The name ID of the property retrieved by Shader.PropertyToID. + The array to set. - + - The anchor of the text. + Set a texture property. + The name of the property. + The name ID of the property retrieved by Shader.PropertyToID. + The Texture to set. - + - The color used to render the text. + Set a texture property. + The name of the property. + The name ID of the property retrieved by Shader.PropertyToID. + The Texture to set. - + - The font used for the text. + Set a vector property. + The name of the property. + The name ID of the property retrieved by Shader.PropertyToID. + The Vector4 value to set. - + - The font size to use (for dynamic fonts). + Set a vector property. + The name of the property. + The name ID of the property retrieved by Shader.PropertyToID. + The Vector4 value to set. - + - The font style to use (for dynamic fonts). + Set a vector array property. + The name of the property. + The name ID of the property retrieved by Shader.PropertyToID. + The array to set. - + - The line spacing multiplier. + Set a vector array property. + The name of the property. + The name ID of the property retrieved by Shader.PropertyToID. + The array to set. - + - The Material to use for rendering. + Set a vector array property. + The name of the property. + The name ID of the property retrieved by Shader.PropertyToID. + The array to set. - + - The pixel offset of the text. + Set a vector array property. + The name of the property. + The name ID of the property retrieved by Shader.PropertyToID. + The array to set. - + - Enable HTML-style tags for Text Formatting Markup. + A collection of common math functions. - + - The tab width multiplier. + Returns the absolute value of f. + - + - The text to display. + Returns the absolute value of value. + - + - A texture image used in a 2D GUI. + Returns the arc-cosine of f - the angle in radians whose cosine is f. + - + - The border defines the number of pixels from the edge that are not affected by scale. + Compares two floating point values and returns true if they are similar. + + - + - The color of the GUI texture. + Returns the arc-sine of f - the angle in radians whose sine is f. + - + - Pixel inset used for pixel adjustments for size and position. + Returns the arc-tangent of f - the angle in radians whose tangent is f. + - + - The texture used for drawing. + Returns the angle in radians whose Tan is y/x. + + - + - Utility class for making new GUI controls. + Returns the smallest integer greater to or equal to f. + - + - A global property, which is true if a ModalWindow is being displayed, false otherwise. + Returns the smallest integer greater to or equal to f. + - + - The controlID of the current hot control. + Clamps a value between a minimum float and maximum float value. + + + - + - The controlID of the control that has keyboard focus. + Clamps value between min and max and returns value. + + + - + - Get access to the system-wide pasteboard. + Clamps value between 0 and 1 and returns value. + - + - Get a unique ID for a control. + Returns the closest power of two value. - - + - + - Get a unique ID for a control. + 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. + - + - Get a unique ID for a control, using an integer as a hint to help ensure correct matching of IDs to controls. + Returns the cosine of angle f in radians. - - - + - + - Get a unique ID for a control, using an integer as a hint to help ensure correct matching of IDs to controls. + Degrees-to-radians conversion constant (Read Only). - - - - + - Get a unique ID for a control, using a the label content as a hint to help ensure correct matching of IDs to controls. + Calculates the shortest difference between two given angles given in degrees. - - - + + - + - Get a unique ID for a control, using a the label content as a hint to help ensure correct matching of IDs to controls. + A tiny floating point value (Read Only). - - - - + - Get a state object from a controlID. + Returns e raised to the specified power. - - + - + - Convert a point from GUI position to screen space. + Returns the largest integer smaller to or equal to f. - + - + - Get an existing state object from a controlID. + Returns the largest integer smaller to or equal to f. - - + - + - Helper function to rotate the GUI around a point. + Converts the given value from gamma (sRGB) to linear color space. - - + - + - Helper function to scale the GUI around a point. + A representation of positive infinity (Read Only). - - - + - Convert a point from screen space to GUI position. + Calculates the linear parameter t that produces the interpolant value within the range [a, b]. - + + + - + - Interface into the Gyroscope. + Returns true if the value is power of two. + - + - Returns the attitude (ie, orientation in space) of the device. + 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. + - + - Sets or retrieves the enabled status of this gyroscope. + Same as Lerp but makes sure the values interpolate correctly when they wrap around 360 degrees. + + + - + - Returns the gravity acceleration vector expressed in the device's reference frame. + 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. + - + - Returns rotation rate as measured by the device's gyroscope. + Converts the given value from linear to gamma (sRGB) color space. + - + - Returns unbiased rotation rate as measured by the device's gyroscope. + Returns the logarithm of a specified number in a specified base. + + - + - Sets or retrieves gyroscope interval in seconds. + Returns the natural (base e) logarithm of a specified number. + - + - Returns the acceleration that the user is giving to the device. + Returns the base 10 logarithm of a specified number. + - + - Interface into functionality unique to handheld devices. + Returns largest of two or more values. + + + - + - Determines whether or not a 32-bit display buffer will be used. + Returns largest of two or more values. + + + - + - Gets the current activity indicator style. + Returns the largest of two or more values. + + + - + - Plays a full-screen movie. + Returns the largest of two or more values. - 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. + Returns the smallest of two or more values. - 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. + Returns the smallest of two or more values. - 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. + Returns the smallest of two or more values. - 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. + Returns the smallest of two or more values. - + + + - + - Sets the desired activity indicator style. + Moves a value current towards target. - + The current value. + The value to move towards. + The maximum change that should be applied to the value. - + - Starts os activity indicator. + Same as MoveTowards but makes sure the values interpolate correctly when they wrap around 360 degrees. + + + - + - Stops os activity indicator. + A representation of negative infinity (Read Only). - + - Triggers device vibration. + Returns the next power of two value. + - + - Represent the hash value. + Generate 2D Perlin noise. + X-coordinate of sample point. + Y-coordinate of sample point. + + Value between 0.0 and 1.0. + - + - Get if the hash value is valid or not. (Read Only) + The infamous 3.14159265358979... value (Read Only). - + - Construct the Hash128. + PingPongs the value t, so that it is never larger than length and never smaller than 0. - - - - + + - + - Convert the input string to Hash128. + Returns f raised to power p. - + + - + - Convert Hash128 to string. + Radians-to-degrees conversion constant (Read Only). - + - Use this PropertyAttribute to add a header above some fields in the Inspector. + Loops the value t, so that it is never larger than length and never smaller than 0. + + - + - The header text. + Returns f rounded to the nearest integer. + - + - Add a header above some fields in the Inspector. + Returns f rounded to the nearest integer. - The header text. + - + - Provide a custom documentation URL for a class. + Returns the sign of f. + - + - Initialize the HelpURL attribute with a documentation url. + Returns the sine of angle f in radians. - The custom documentation URL for this class. + The argument as a radian. + + The return value between -1 and +1. + - + - The documentation URL specified for this class. + 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. - + - Bit mask that controls object destruction, saving and visibility in inspectors. + 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. - + - 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. + 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. - + - The object will not be saved when building a player. + 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. - + - The object will not be saved to the scene in the editor. + 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. - + - The object will not be unloaded by Resources.UnloadUnusedAssets. + 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. - + - A combination of not shown in the hierarchy, not saved to to scenes and not unloaded by The object will not be unloaded by Resources.UnloadUnusedAssets. + Interpolates between min and max with smoothing at the limits. + + + - + - The object will not appear in the hierarchy. + Returns square root of f. + - + - It is not possible to view it in the inspector. + Returns the tangent of angle f in radians. + - + - A normal, visible object. This is the default. + A standard 4x4 transformation matrix. - + - The object is not be editable in the inspector. + The determinant of the matrix. - + - Makes a variable not show up in the inspector but be serialized. + Returns the identity matrix (Read Only). - + - The HingeJoint groups together 2 rigid bodies, constraining them to move like connected by a hinge. + The inverse of this matrix (Read Only). - + - The current angle in degrees of the joint relative to its rest position. (Read Only) + Is this the identity matrix? - + - Limit of angular rotation (in degrees) on the hinge joint. + Returns the transpose of this matrix (Read Only). - + - The motor will apply a force up to a maximum force to achieve the target velocity in degrees per second. + Returns a matrix with all elements set to zero (Read Only). - + - The spring attempts to reach a target angle by adding spring and damping forces. + Get a column of the matrix. + - + - Enables the joint's limits. Disabled by default. + Returns a row of the matrix. + - + - Enables the joint's motor. Disabled by default. + 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. + - + - Enables the joint's spring. Disabled by default. + Transforms a position by this matrix (generic). + - + - The angular velocity of the joint in degrees per second. + Transforms a position by this matrix (fast). + - + - Joint that allows a Rigidbody2D object to rotate around a point in space or a point on another object. + Transforms a direction by this matrix. + - + - The current joint angle (in degrees) with respect to the reference angle. + Multiplies two matrices. + + - + - The current joint speed. + Transforms a Vector4 by a matrix. + + - + - Limit of angular rotation (in degrees) on the joint. + Creates an orthogonal projection matrix. + + + + + + - + - Gets the state of the joint limit. + Creates a perspective projection matrix. + + + + - + - Parameters for the motor force applied to the joint. + Creates a scaling matrix. + - + - The angle (in degrees) referenced between the two bodies used as the constraint for the joint. + Sets a column of the matrix. + + - + - Should limits be placed on the range of rotation? + Sets a row of the matrix. + + - + - Should the joint be rotated automatically by a motor torque? + Sets this matrix to a translation, rotation and scaling matrix. + + + - + - Gets the motor torque of the joint given the specified timestep. + Access element at [row, column]. - The time to calculate the motor torque for. - + - Wrapping modes for text that reaches the horizontal boundary. + Access element at sequential index (0..15 inclusive). - + - Text can exceed the horizontal boundary. + Returns a nicely formatted string for this matrix. + - + - Text will word-wrap when reaching the horizontal boundary. + Returns a nicely formatted string for this matrix. + - + - This is the data structure for holding individual host information. + Creates a translation, rotation and scaling matrix. + + + - + - A miscellaneous comment (can hold data). + A class that allows creating or modifying meshes from scripts. - + - Currently connected players. + The bind poses. The bind pose at each index refers to the bone with the same index. - + - The name of the game (like John Doe's Game). + Returns BlendShape count on this mesh. - + - The type of the game (like "MyUniqueGameType"). + The bone weights of each vertex. - + - The GUID of the host, needed when connecting with NAT punchthrough. + The bounding volume of the mesh. - + - Server IP address. + Vertex colors of the Mesh. - + - Does the server require a password? + Vertex colors of the Mesh. - + - Maximum players limit. + Returns state of the Read/Write Enabled checkbox when model was imported. - + - Server port. + The normals of the Mesh. - + - Does this server require NAT punchthrough? + The number of sub-Meshes. Every Material has a separate triangle list. - + - Human Body Bones. + The tangents of the Mesh. - + - This is the Chest bone. + An array containing all triangles in the Mesh. - + - This is the Head bone. + The base texture coordinates of the Mesh. - + - This is the Hips bone. + The second texture coordinate set of the mesh, if present. - + - This is the Jaw bone. + The third texture coordinate set of the mesh, if present. - + - This is the Last bone index delimiter. + The fourth texture coordinate set of the mesh, if present. - + - This is the Left Eye bone. + Get the number of vertex buffers present in the Mesh. (Read Only) - + - This is the Left Ankle bone. + Returns the number of vertices in the Mesh (Read Only). - + - This is the Left Wrist bone. + Returns a copy of the vertex positions or assigns a new vertex positions array. - + - This is the left index 3rd phalange. + 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. - + - This is the left index 2nd phalange. + Clears all vertex data and all triangle indices. + - + - This is the left index 1st phalange. + Clears all blend shapes from Mesh. - + - This is the left little 3rd phalange. + 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. + - + - This is the left little 2nd phalange. + Creates an empty Mesh. - + - This is the left little 1st phalange. + Gets the bind poses for this instance. + A list of bind poses to populate. - + - This is the Left Elbow bone. + Returns the frame count for a blend shape. + The shape index to get frame count from. - + - This is the Left Knee bone. + 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. - + - This is the left middle 3rd phalange. + Returns the weight of a blend shape frame. + The shape index of the frame. + The frame index to get the weight from. - + - This is the left middle 2nd phalange. + Returns index of BlendShape by given name. + - + - This is the left middle 1st phalange. + Returns name of BlendShape by given index. + - + - This is the left ring 3rd phalange. + Gets the bone weights for this instance. + A list of bone weights to populate. - + - This is the left ring 2nd phalange. + Gets the vertex colors for this instance. + A list of vertex colors to populate. - + - This is the left ring 1st phalange. + Gets the vertex colors for this instance. + A list of vertex colors to populate. - + - This is the Left Shoulder bone. + Gets the index count of the given submesh. + - + - This is the left thumb 3rd phalange. + Gets the starting index location within the Mesh's index buffer, for the given submesh. + - + - This is the left thumb 2nd phalange. + Gets the index buffer for the specified sub mesh on this instance. + A list of indices to populate. + The sub mesh on this instance. See subMeshCount. - + - This is the left thumb 1st phalange. + Gets the index buffer for the specified sub mesh on this instance. + A list of indices to populate. + The sub mesh on this instance. See subMeshCount. - + - This is the Left Toes bone. + Retrieves a native (underlying graphics API) pointer to the index buffer. + + Pointer to the underlying graphics API index buffer. + - + - This is the Left Upper Arm bone. + 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. + - + - This is the Left Upper Leg bone. + Gets the vertex normals for this instance. + A list of vertex normals to populate. - + - This is the Neck bone. + Gets the tangents for this instance. + A list of tangents to populate. - + - This is the Right Eye bone. + Gets the topology of a sub-Mesh. + - + - This is the Right Ankle bone. + Gets the triangle list for the specified sub mesh on this instance. + A list of vertex indices to populate. + The sub mesh on this instance. See subMeshCount. - + - This is the Right Wrist bone. + Gets the triangle list for the specified sub mesh on this instance. + A list of vertex indices to populate. + The sub mesh on this instance. See subMeshCount. - + - This is the right index 3rd phalange. + Get the UVs for a given chanel. + The UV Channel (zero-indexed). + List of UVs to get for the given index. - + - This is the right index 2nd phalange. + Get the UVs for a given chanel. + The UV Channel (zero-indexed). + List of UVs to get for the given index. - + - This is the right index 1st phalange. + Get the UVs for a given chanel. + The UV Channel (zero-indexed). + List of UVs to get for the given index. - + - This is the right little 3rd phalange. + Gets the vertex positions for this instance. + A list of vertex positions to populate. - + - This is the right little 2nd phalange. + Optimize mesh for frequent updates. - + - This is the right little 1st phalange. + Optimizes the Mesh for display. - + - This is the Right Elbow bone. + Recalculate the bounding volume of the Mesh from the vertices. - + - This is the Right Knee bone. + Recalculates the normals of the Mesh from the triangles and vertices. - + - This is the right middle 3rd phalange. + Recalculates the tangents of the Mesh from the normals and texture coordinates. - + - This is the right middle 2nd phalange. + Vertex colors of the Mesh. + Per-Vertex Colours. - + - This is the right middle 1st phalange. + Vertex colors of the Mesh. + Per-Vertex Colours. - + - This is the right ring 3rd phalange. + 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 submesh 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. - + - This is the right ring 2nd phalange. + 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 submesh 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. - + - This is the right ring 1st phalange. + Set the normals of the Mesh. + Per-vertex normals. - + - This is the Right Shoulder bone. + Set the tangents of the Mesh. + Per-vertex tangents. - + - This is the right thumb 3rd phalange. + Sets the triangle list for the sub-Mesh. + The list of indices that define the triangles. + The submesh 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. - + - This is the right thumb 2nd phalange. + Sets the triangle list for the sub-Mesh. + The list of indices that define the triangles. + The submesh 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. - + - This is the right thumb 1st phalange. + Set the UVs for a given chanel. + The UV Channel (zero-indexed). + List of UVs to set for the given index. - + - This is the Right Toes bone. + Set the UVs for a given chanel. + The UV Channel (zero-indexed). + List of UVs to set for the given index. - + - This is the Right Upper Arm bone. + Set the UVs for a given chanel. + The UV Channel (zero-indexed). + List of UVs to set for the given index. - + - This is the Right Upper Leg bone. + Assigns a new vertex positions array. + Per-vertex position. - + - This is the first Spine bone. + Upload previously done Mesh modifications to the graphics API. + Frees up system memory copy of mesh data when set to true. + - + - The mapping between a bone in the model and the conceptual bone in the Mecanim human anatomy. + A mesh collider allows you to do between meshes and primitives. - + - The name of the bone to which the Mecanim human bone is mapped. + Use a convex collider from the mesh. - + - The name of the Mecanim human bone to which the bone from the model is mapped. + Allow the physics engine to increase the volume of the input mesh in attempt to generate a valid convex mesh. - + - The rotation limits that define the muscle for this bone. + The mesh object used for collision detection. - + - Class that holds humanoid avatar parameters to pass to the AvatarBuilder.BuildHumanAvatar function. + Used when set to inflateMesh to determine how much inflation is acceptable. - + - Amount by which the arm's length is allowed to stretch when using IK. + Uses interpolated normals for sphere collisions instead of flat polygonal normals. - + - Modification to the minimum distance between the feet of a humanoid model. + A class to access the Mesh of the. - + - True for any human that has a translation Degree of Freedom (DoF). It is set to false by default. + Returns the instantiated Mesh assigned to the mesh filter. - + - Mapping between Mecanim bone names and bone names in the rig. + Returns the shared mesh of the mesh filter. - + - Amount by which the leg's length is allowed to stretch when using IK. + Class used to allow GameObject.AddComponent / GameObject.GetComponent to be used. - + - Defines how the lower arm's roll/twisting is distributed between the elbow and wrist joints. + Renders meshes inserted by the MeshFilter or TextMesh. - + - Defines how the lower leg's roll/twisting is distributed between the knee and ankle. + Vertex attributes in this mesh will override or add attributes of the primary mesh in the MeshRenderer. - + - List of bone Transforms to include in the model. + Topology of Mesh faces. - + - Defines how the lower arm's roll/twisting is distributed between the shoulder and elbow joints. + Mesh is made from lines. - + - Defines how the upper leg's roll/twisting is distributed between the thigh and knee joints. + Mesh is a line strip. - + - This class stores the rotation limits that define the muscle for a single human bone. + Mesh is made from points. - + - Length of the bone to which the limit is applied. + Mesh is made from quads. - + - The default orientation of a bone when no muscle action is applied. + Mesh is made from triangles. - + - The maximum rotation away from the initial value that this muscle can apply. + Use this class to record to an AudioClip using a connected microphone. - + - The maximum negative rotation away from the initial value that this muscle can apply. + A list of available microphone devices, identified by name. - + - Should this limit use the default values? + Stops recording. + The name of the device. - + - Retargetable humanoid pose. + 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. - + - The human body position for that pose. + Get the position in samples of the recording. + The name of the device. - + - The human body orientation for that pose. + Query if a device is currently recording. + The name of the device. - + - The array of muscle values for that pose. + 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. + - + - A handler that lets you read or write a HumanPose from or to a humanoid avatar skeleton hierarchy. + MonoBehaviour is the base class from which every Unity script derives. - + - Creates a human pose handler from an avatar and a root transform. + Logs message to the Unity Console (identical to Debug.Log). - 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. + Allow a specific instance of a MonoBehaviour to run in edit mode (only available in the editor). - The output human pose. - + - Sets a human pose on the handled avatar skeleton. + Disabling this lets you skip the GUI layout phase. - The human pose to be set. - + - Details of all the human bone and muscle types defined by Mecanim. + Cancels all Invoke calls on this MonoBehaviour. - + - The number of human bone types defined by Mecanim. + Cancels all Invoke calls with name methodName on this behaviour. + - + - Return the bone to which a particular muscle is connected. + Invokes the method methodName in time seconds. - Muscle index. + + - + - Array of the names of all human bone types defined by Mecanim. + Invokes the method methodName in time seconds, then repeatedly every repeatRate seconds. + + + - + - Get the default maximum value of rotation for a muscle in degrees. + Is any invoke on methodName pending? - Muscle index. + - + - Get the default minimum value of rotation for a muscle in degrees. + Is any invoke pending on this MonoBehaviour? - Muscle index. - + - Returns parent humanoid bone index of a bone. + Starts a coroutine. - Humanoid bone index to get parent from. - - Humanoid bone index of parent. - + - + - The number of human muscle types defined by Mecanim. + Starts a coroutine named methodName. + + - + - Obtain the muscle index for a particular bone index and "degree of freedom". + Starts a coroutine named methodName. - 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. + Stops all coroutines running on this behaviour. - + - Is the bone a member of the minimal set of bones that Mecanim requires for a human model? + Stops the first coroutine named methodName, or the coroutine stored in routine running on this behaviour. - Index of the bone to test. + Name of coroutine. + Name of the function in code. - + - The number of bone types that are required by Mecanim for any human model. + 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. - + - This element can filter raycasts. If the top level element is hit it can further 'check' if the location is valid. + Base class for AnimationClips and BlendTrees. - + - Given a point and a camera is the raycast valid. + The type of motion vectors that should be generated. - Screen position. - Raycast camera. - - Valid. - - + - Interface for custom logger implementation. + Use only camera movement to track motion. - + - To selective enable debug log message. + Do not track motion. Motion vectors will be 0. - + - To runtime toggle debug logging [ON/OFF]. + Use a specific pass (if required) to track motion. - + - Set Logger.ILogHandler. + Movie Textures are textures onto which movies are played back. - + - Check logging is enabled based on the LogType. + Returns the AudioClip belonging to the MovieTexture. - - - Retrun true in case logs of LogType will be logged otherwise returns false. - - + - Logs message to the Unity Console using default logger. + The time, in seconds, that the movie takes to play back completely. - - - - - + - Logs message to the Unity Console using default logger. + Returns whether the movie is playing or not. - - - - - + - Logs message to the Unity Console using default logger. + If the movie is downloading from a web site, this returns if enough data has been downloaded so playback should be able to start without interruptions. - - - - - + - Logs message to the Unity Console using default logger. + Set this to true to make the movie loop. - - - - - + - Logs message to the Unity Console using default logger. + Pauses playing the movie. - - - - - + - Logs message to the Unity Console using default logger. + Starts playing the movie. - - - - - + - Logs message to the Unity Console using default logger. + Stops playing the movie, and rewinds it to the beginning. - - - - - + - A variant of ILogger.Log that logs an error message. + Attribute to make a string be edited with a multi-line textfield. - - - - + - A variant of ILogger.Log that logs an error message. + 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. - + - A variant of ILogger.Log that logs an exception message. + 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. - + - Logs a formatted message. + The network class is at the heart of the network implementation and provides the core functions. - - - - + - A variant of Logger.Log that logs an warning message. + All connected players. - - - - + - A variant of Logger.Log that logs an warning message. + The IP address of the connection tester used in Network.TestConnection. - - - - + - Interface for custom log handler implementation. + The port of the connection tester used in Network.TestConnection. - + - A variant of ILogHandler.LogFormat that logs an exception message. + Set the password for the server (for incoming connections). - Runtime Exception. - Object to which the message applies. - + - Logs a formatted message. + Returns true if your peer type is client. - The type of the log message. - Object to which the message applies. - A composite format string. - Format arguments. - + - Any Image Effect with this attribute will be rendered after opaque geometry but before transparent geometry. + Enable or disable the processing of network messages. - + - When using HDR rendering it can sometime be desirable to switch to LDR rendering during ImageEffect rendering. + Returns true if your peer type is server. - + - How image and text is placed inside GUIStyle. + Set the log level for network messages (default is Off). - + - Image is above the text. + Set the maximum amount of connections/players allowed. - + - Image is to the left of the text. + Get or set the minimum number of ViewID numbers in the ViewID pool given to clients by the server. - + - Only the image is displayed. + The IP address of the NAT punchthrough facilitator. - + - Only the text is displayed. + The port of the NAT punchthrough facilitator. - + - Controls IME input. + The status of the peer type, i.e. if it is disconnected, connecting, server or client. - + - Enable IME input only when a text field is selected (default). + Get the local NetworkPlayer instance. - + - Disable IME input. + The IP address of the proxy server. - + - Enable IME input. + Set the proxy server password. - + - Interface into the Input system. + The port of the proxy server. - + - Last measured linear acceleration of a device in three-dimensional space. (Read Only) + The default send rate of network updates for all Network Views. - + - Number of acceleration measurements which occurred during last frame. + Get the current network time (seconds). - + - Returns list of acceleration measurements which occurred during the last frame. (Read Only) (Allocates temporary variables). + Indicate if proxy support is needed, in which case traffic is relayed through the proxy server. - + - Is any key or mouse button currently held down? (Read Only) + Query for the next available network view ID number and allocate it (reserve). - + - Returns true the first frame the user hits any key or mouse button. (Read Only) + Close the connection to another system. + + - + - Should Back button quit the application? - -Only usable on Android, Windows Phone or Windows Tablets. + Connect to the specified host (ip or domain name) and server port. + + + - + - Property for accessing compass (handheld devices only). (Read Only) + Connect to the specified host (ip or domain name) and server port. + + + - + - This property controls if input sensors should be compensated for screen orientation. + This function is exactly like Network.Connect but can accept an array of IP addresses. + + + - + - The current text input position used by IMEs to open windows. + This function is exactly like Network.Connect but can accept an array of IP addresses. + + + - + - The current IME composition string being typed by the user. + Connect to a server GUID. NAT punchthrough can only be performed this way. + + - + - Device physical orientation as reported by OS. (Read Only) + Connect to a server GUID. NAT punchthrough can only be performed this way. + + - + - Property indicating whether keypresses are eaten by a textinput if it has focus (default true). + Connect to the host represented by a HostData structure returned by the Master Server. + + - + - Returns default gyroscope. + Connect to the host represented by a HostData structure returned by the Master Server. + + - + - Controls enabling and disabling of IME input composition. + Destroy the object associated with this view ID across the network. + - + - Does the user have an IME keyboard input source selected? + Destroy the object across the network. + - + - Returns the keyboard input entered this frame. (Read Only) + Destroy all the objects based on view IDs belonging to this player. + - + - Property for accessing device location (handheld devices only). (Read Only) + Close all open connections and shuts down the network interface. + - + - The current mouse position in pixel coordinates. (Read Only) + Close all open connections and shuts down the network interface. + - + - The current mouse scroll delta. (Read Only) + The last average ping time to the given player in milliseconds. + - + - Property indicating whether the system handles multiple touches. + The last ping time to the given player in milliseconds. + - + - Enables/Disables mouse simulation with touches. By default this option is enabled. + Check if this machine has a public IP address. - + - Returns true when Stylus Touch is supported by a device or platform. + Initializes security layer. - + - Number of touches. Guaranteed not to change throughout the frame. (Read Only) + Initialize the server. + + + - + - Returns list of objects representing status of all touches during last frame. (Read Only) (Allocates temporary variables). + Initialize the server. + + + - + - Bool value which let's users check if touch pressure is supported. + Network instantiate a prefab. + + + + - + - Returns whether the device on which application is currently running supports touch input. + Remove all RPC functions which belong to this player ID. + - + - Returns specific acceleration measurement which occurred during last frame. (Does not allocate temporary variables). + Remove all RPC functions which belong to this player ID and were sent based on the given group. - + + - + - Returns the value of the virtual axis identified by axisName. + Remove the RPC function calls accociated with this view ID number. - + - + - Returns the value of the virtual axis identified by axisName with no smoothing filtering applied. + Remove all RPC functions which belong to given group number. - + - + - Returns true while the virtual button identified by buttonName is held down. + Set the level prefix which will then be prefixed to all network ViewID numbers. - + - + - Returns true during the frame the user pressed down the virtual button identified by buttonName. + Enable or disables the reception of messages in a specific group number from a specific player. - + + + - + - Returns true the first frame the user releases the virtual button identified by buttonName. + Enables or disables transmission of messages and RPC calls on a specific network group number. - + + - + - Returns an array of strings describing the connected joysticks. + Enable or disable transmission of messages and RPC calls based on target network player as well as the network group. + + + - + - Returns true while the user holds down the key identified by name. Think auto fire. + Test this machines network connection. - + - + - Returns true while the user holds down the key identified by the key KeyCode enum parameter. + Test this machines network connection. - + - + - Returns true during the frame the user starts pressing down the key identified by name. + Test the connection specifically for NAT punch-through connectivity. - + - + - Returns true during the frame the user starts pressing down the key identified by the key KeyCode enum parameter. + Test the connection specifically for NAT punch-through connectivity. - + - + - Returns true during the frame the user releases the key identified by name. + Possible status messages returned by Network.Connect and in MonoBehaviour.OnFailedToConnect|OnFailedToConnect in case the error was not immediate. - - + - Returns true during the frame the user releases the key identified by the key KeyCode enum parameter. + Cannot connect to two servers at once. Close the connection before connecting again. - - + - Returns whether the given mouse button is held down. + We are already connected to this particular server (can happen after fast disconnect/reconnect). - - + - Returns true during the frame the user pressed the given mouse button. + We are banned from the system we attempted to connect to (likely temporarily). - - + - Returns true during the frame the user releases the given mouse button. + Connection attempt failed, possibly because of internal connectivity problems. - - + - Returns object representing status of a specific touch. (Does not allocate temporary variables). + Internal error while attempting to initialize network interface. Socket possibly already in use. - - + - Determine whether a particular joystick model has been preconfigured by Unity. (Linux-only). + No host target given in Connect. - 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. + Incorrect parameters given to Connect function. - + - ActivityIndicator Style (iOS Specific). + Client could not connect internally to same network NAT enabled server. - + - Do not show ActivityIndicator. + The server is using a password and has refused our connection because we did not set the correct password. - + - The standard gray style of indicator (UIActivityIndicatorViewStyleGray). + NAT punchthrough attempt has failed. The cause could be a too restrictive NAT implementation on either endpoints. - + - The standard white style of indicator (UIActivityIndicatorViewStyleWhite). + Connection lost while attempting to connect to NAT target. - + - The large white style of indicator (UIActivityIndicatorViewStyleWhiteLarge). + The NAT target we are trying to connect to is not connected to the facilitator server. - + - ADBannerView is a wrapper around the ADBannerView class found in the Apple iAd framework and is only available on iOS. + No error occurred. - + - Banner layout. + We presented an RSA public key which does not match what the system we connected to is using. - + - Checks if banner contents are loaded. + The server is at full capacity, failed to connect. - + - The position of the banner view. + The reason a disconnect event occured, like in MonoBehaviour.OnDisconnectedFromServer|OnDisconnectedFromServer. - + - The size of the banner view. + The connection to the system has been closed. - + - Banner visibility. Initially banner is not visible. + The connection to the system has been lost, no reliable packets could be delivered. - + - Will be fired when banner ad failed to load. + Defines parameters of channels. - + - Will be fired when banner was clicked. + UnderlyingModel.MemDoc.MemDocModel. + Requested type of quality of service (default Unreliable). + Copy constructor. - + - Will be fired when banner loaded new ad. + UnderlyingModel.MemDoc.MemDocModel. + Requested type of quality of service (default Unreliable). + Copy constructor. - + - Creates a banner view with given type and auto-layout params. + UnderlyingModel.MemDoc.MemDocModel. - - + Requested type of quality of service (default Unreliable). + Copy constructor. - + - Checks if the banner type is available (e.g. MediumRect is available only starting with ios6). + Channel quality of service. - - + - Specifies how banner should be layed out on screen. + Defines size of the buffer holding reliable messages, before they will be acknowledged. - + - Traditional Banner: align to screen bottom. + Ack buffer can hold 128 messages. - + - Rect Banner: align to screen bottom, placing at the center. + Ack buffer can hold 32 messages. - + - Rect Banner: place in bottom-left corner. + Ack buffer can hold 64 messages. - + - Rect Banner: place in bottom-right corner. + Ack buffer can hold 96 messages. - + - Rect Banner: place exactly at screen center. + This class defines parameters of connection between two peers, this definition includes various timeouts and sizes as well as channel configuration. - + - Rect Banner: align to screen left, placing at the center. + 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. - + - Rect Banner: align to screen right, placing at the center. + Determines the size of the buffer used to store reliable messages that are waiting for acknowledgement. It can be set to Ack32, Ack64, Ack96, or Ack128. 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. - + - Completely manual positioning. + 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. + - + - Traditional Banner: align to screen top. + 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. - + - Rect Banner: align to screen top, placing at the center. + Defines, when multiplied internally by InitialBandwidth, the maximum bandwidth that can be used under burst conditions. - + - Rect Banner: place in top-left corner. + (Read Only) The number of channels in the current configuration. - + - Rect Banner: place in top-right corner. + 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). - + - The type of the banner view. + Timeout in ms which library will wait before it will send another connection request. - + - Traditional Banner (it takes full screen width). + Will create default connection config or will copy them from another. + Connection config. - + - Rect Banner (300x250). + Will create default connection config or will copy them from another. + Connection config. - + - ADInterstitialAd is a wrapper around the ADInterstitialAd class found in the Apple iAd framework and is only available on iPad. + 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. - + - Checks if InterstitialAd is available (it is available on iPad since iOS 4.3, and on iPhone since iOS 7.0). + 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. - + - Has the interstitial ad object downloaded an advertisement? (Read Only) + Return the QoS set for the given channel or throw an out of range exception. + Index in array. + + Channel QoS. + - + - Creates an interstitial ad. + 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 1500MB/sec (1,536,000 bytes per second). The default value is intentionally a large number to allow all traffic to pass without delay. - - + - Creates an interstitial ad. + 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. - - + - Will be called when ad is ready to be shown. + 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. - + - Will be called when user did view ad contents: i.e. he went past initial screen. Please note that it is impossible to determine if he clicked on any links on ad sequence that follows initial screen. + 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. - + - Reload advertisement. + 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. - + - Shows full-screen advertisement to user. + 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. - + - Specify calendar types. + 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%. - + - Identifies the Buddhist calendar. + 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%. - + - Identifies the Chinese calendar. + 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. - + - Identifies the Gregorian calendar. + 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. - + - Identifies the Hebrew calendar. + 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. - + - Identifies the Indian calendar. + 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. - + - Identifies the Islamic calendar. + Defines the path to the file containing the certification authority (CA) certificate for WebSocket via SSL communication. - + - Identifies the Islamic civil calendar. + Defines path to SSL certificate file, for WebSocket via SSL communication. - + - Identifies the ISO8601. + Defines the path to the file containing the private key for WebSocket via SSL communication. - + - Identifies the Japanese calendar. + 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). - + - Identifies the Persian calendar. + When starting a server use protocols that make use of platform specific optimisations where appropriate rather than cross-platform protocols. (Sony consoles only). - + - Identifies the Republic of China (Taiwan) calendar. + Validate parameters of connection config. Will throw exceptions if parameters are incorrect. + - + - Specify calendrical units. + 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. - + - Specifies the day unit. + Create configuration for network simulator; You can use this class in editor and developer build only. - + - Specifies the era unit. + 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. - + - Specifies the hour unit. + Destructor. - + - Specifies the minute unit. + Manage and process HTTP response body data received from a remote server. - + - Specifies the month unit. + Returns the raw bytes downloaded from the remote server, or null. (Read Only) - + - Specifies the quarter of the calendar. + 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) - + - Specifies the second unit. + Convenience property. Returns the bytes from data interpreted as a UTF8 string. (Read Only) - + - Specifies the week unit. + Callback, invoked when all data has been received from the remote server. - + - Specifies the weekday unit. + Signals that this [DownloadHandler] is no longer being used, and should clean up any resources it is using. - + - Specifies the ordinal weekday unit. + Callback, invoked when the data property is accessed. + + Byte array to return as the value of the data property. + - + - Specifies the year unit. + Callback, invoked when UnityWebRequest.downloadProgress is accessed. + + The return value for UnityWebRequest.downloadProgress. + - + - Interface into iOS specific functionality. + Callback, invoked when the text property is accessed. + + String to return as the return value of the text property. + - + - Advertising ID. + Callback, invoked with a Content-Length header is received. + The value of the received Content-Length header. - + - Is advertising tracking enabled. + 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. + - + - The generation of the device. (Read Only) + A DownloadHandler subclass specialized for downloading AssetBundles. - + - iOS version. + Returns the downloaded AssetBundle, or null. (Read Only) - + - Vendor ID. + 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. - + - Reset "no backup" file flag: file will be synced with iCloud/iTunes backup and can be deleted by OS in low storage situations. + 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. - + - Set file flag to be excluded from iCloud/iTunes backup. + 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. - + - iOS device generation. + Returns the downloaded AssetBundle, or null. + A finished UnityWebRequest object with DownloadHandlerAssetBundle attached. + + The same as DownloadHandlerAssetBundle.assetBundle + - + - iPad, first generation. + Not implemented. Throws <a href="http:msdn.microsoft.comen-uslibrarysystem.notsupportedexception">NotSupportedException<a>. + + Not implemented. + - + - iPad, second generation. + Not implemented. Throws <a href="http:msdn.microsoft.comen-uslibrarysystem.notsupportedexception">NotSupportedException<a>. + + Not implemented. + - + - iPad, third generation. + A DownloadHandler subclass specialized for downloading audio data for use as AudioClip objects. - + - iPad, fourth generation. + Returns the downloaded AudioClip, or null. (Read Only) - + - iPad Air, fifth generation. + 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. - + - iPad Air. + Returns the downloaded AudioClip, or null. + A finished UnityWebRequest object with DownloadHandlerAudioClip attached. + + The same as DownloadHandlerAudioClip.audioClip + - + - iPad Air 2. + Called by DownloadHandler.data. Returns a copy of the downloaded clip data as raw bytes. + + A copy of the downloaded data. + - + - iPadMini, first generation. + A general-purpose DownloadHandler implementation which stores received data in a native byte buffer. - + - iPadMini Retina, second generation. + Default constructor. - + - iPad Mini 3. + 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 + - + - iPad Mini, fourth generation. + 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. + - + - iPad Pro 9.7", first generation. + Returns a copy of the native-memory buffer interpreted as a UTF8 string. + + A string representing the data in the native-memory buffer. + - + - iPad Pro, first generation. + An abstract base class for user-created scripting-driven DownloadHandler implementations. - + - Yet unknown iPad. + Create a DownloadHandlerScript which allocates new buffers when passing data to callbacks. - + - iPhone, first generation. + 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. - + - iPhone, second generation. + A DownloadHandler subclass specialized for downloading images for use as Texture objects. - + - iPhone, third generation. + Returns the downloaded Texture, or null. (Read Only) - + - iPhone, fourth generation. + Default constructor. - + - iPhone, fifth generation. + Constructor, allows TextureImporter.isReadable property to be set. + Value to set for TextureImporter.isReadable. - + - iPhone5. + Returns the downloaded Texture, or null. + A finished UnityWebRequest object with DownloadHandlerTexture attached. + + The same as DownloadHandlerTexture.texture + - + - iPhone 5C. + Called by DownloadHandler.data. Returns a copy of the downloaded image data as raw bytes. + + A copy of the downloaded data. + - + - iPhone 5S. + Defines global paramters for network library. - + - iPhone 6. + Create new global config object. - + - iPhone 6 plus. + Defines how many hosts you can use. Default Value = 16. Max value = 128. - + - iPhone 6S. + Deprecated. Defines maximum delay for network simulator. See Also: MaxTimerTimeout. - + - iPhone 6S Plus. + Defines maximum possible packet size in bytes for all network connections. - + - iPhone SE, first generation. + Defines the maximum timeout in milliseconds for any configuration. The default value is 12 seconds (12000ms). - + - Yet unknown iPhone. + Deprecated. Defines the minimal timeout for network simulator. You cannot set up any delay less than this value. See Also: MinTimerTimeout. - + - iPod Touch, first generation. + Defines the minimum timeout in milliseconds recognised by the system. The default value is 1 ms. - + - iPod Touch, second generation. + This property determines the initial size of the queue that holds messages received by Unity Multiplayer before they are processed. - + - iPod Touch, third generation. + Defines the initial size of the send queue. Messages are placed in this queue ready to be sent in packets to their destination. - + - iPod Touch, fourth generation. + Defines reactor model for the network library. - + - iPod Touch, fifth generation. + 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. - + - Yet unknown iPod Touch. + Defines how many worker threads are available to handle incoming and outgoing messages. - + - iOS.LocalNotification is a wrapper around the UILocalNotification class found in the Apple UIKit framework and is only available on iPhoneiPadiPod Touch. + 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). - + - The title of the action button or slider. + 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. + - + - The message displayed in the notification alert. + Create topology. + Default config. + Maximum default connections. - + - Identifies the image used as the launch image when the user taps the action button. + Defines config for default connections in the topology. - + - The number to display as the application's icon badge. + Return reference to special connection config. Parameters of this config can be changed. + Config id. + + Connection config. + - + - The default system sound. (Read Only) + Defines how many connection with default config be permitted. - + - The date and time when the system should deliver the notification. + Defines the maximum number of messages that each host can hold in its pool of received messages. The default size is 128. - + - A boolean value that controls whether the alert action is visible or not. + 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. - + - The calendar type (Gregorian, Chinese, etc) to use for rescheduling the notification. + List of special connection configs. - + - The calendar interval at which to reschedule the notification. + Returns count of special connection added to topology. - + - The name of the sound file to play when an alert is displayed. + An interface for composition of data into multipart forms. - + - The time zone of the notification's fire date. + 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. + - + - A dictionary for passing custom information to the notified application. + 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. + - + - Creates a new local notification. + 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. + - + - NotificationServices is only available on iPhoneiPadiPod Touch. + Returns the name of this section, if any. + + The section's name, or null. + - + - Device token received from Apple Push Service after calling NotificationServices.RegisterForRemoteNotificationTypes. (Read Only) + Details about a UNET MatchMaker match. - + - Enabled local and remote notification types. + The binary access token this client uses to authenticate its session for future commands. - + - The number of received local notifications. (Read Only) + IP address of the host of the match,. - + - The list of objects representing received local notifications. (Read Only) + The numeric domain for the match. - + - Returns an error that might occur on registration for remote notifications via NotificationServices.RegisterForRemoteNotificationTypes. (Read Only) + The unique ID of this match. - + - The number of received remote notifications. (Read Only) + NodeID for this member client in the match. - + - The list of objects representing received remote notifications. (Read Only) + Port of the host of the match. - + - All currently scheduled local notifications. + This flag indicates whether or not the match is using a Relay server. - + - Cancels the delivery of all scheduled local notifications. + A class describing the match information as a snapshot at the time the request was processed on the MatchMaker. - + - Cancels the delivery of the specified scheduled local notification. + The average Elo score of the match. - - + - Discards of all received local notifications. + The current number of players in the match. - + - Discards of all received remote notifications. + The collection of direct connect info classes describing direct connection information supplied to the MatchMaker. - + - Returns an object representing a specific local notification. (Read Only) + The NodeID of the host for this match. - - + - Returns an object representing a specific remote notification. (Read Only) + Describes if the match is private. Private matches are unlisted in ListMatch results. - - + - Presents a local notification immediately. + The collection of match attributes on this match. - - + - Register to receive local and remote notifications of the specified types from a provider via Apple Push Service. + The maximum number of players this match can grow to. - 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. + The text name for this match. - Notification types to register for. - Specify true to also register for remote notifications. - + - Schedules a local notification. + The network ID for this match. - - + - Unregister for remote notifications. + A class describing one member of a match and what direct connect information other clients have supplied. - + - Specifies local and remote notification types. + 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. - + - Notification is an alert message. + NodeID of the match member this info refers to. - + - Notification is a badge shown above the application's icon. + The private network address supplied for this direct connect info. - + - No notification types specified. + The public network address supplied for this direct connect info. - + - Notification is an alert sound. + A component for communicating with the Unity Multiplayer Matchmaking service. - + - On Demand Resources API. + The base URI of the MatchMaker that this NetworkMatch will communicate with. - + - Indicates whether player was built with "Use On Demand Resources" player setting enabled. + 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. - + - Creates an On Demand Resources (ODR) request. + Use this function to create a new match. The client which calls this function becomes the host of the match. - Tags for On Demand Resources that should be included in the request. + 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. - Object representing ODR request. + This function is asynchronous and will complete at some point in the future, when the coroutine has finished communicating with the service backend. - - - 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. + 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. - + - Sets the priority for request. + 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. + - + - Release all resources kept alive by On Demand Resources (ODR) request. + 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. + - + - Gets file system's path to the resource available in On Demand Resources (ODR) request. + The function used to tell MatchMaker the current client wishes to join a specific match. - Resource name. + 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. + - + - RemoteNotification is only available on iPhoneiPadiPod Touch. + 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. + - + - The message displayed in the notification alert. (Read Only) + 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. + - + - The number to display as the application's icon badge. (Read Only) + 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 boolean value that controls whether the alert action is visible or not. (Read Only) + A helper object for form sections containing generic, non-file data. - + - The name of the sound file to play when an alert is displayed. (Read Only) + Returns the value to use in this section's Content-Type header. + + The Content-Type header for this section, or null. + - + - A dictionary for passing custom information to the notified application. (Read Only) + 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. + - + - Interface to receive callbacks upon serialization and deserialization. + 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. + - + - See ISerializationCallbackReceiver.OnBeforeSerialize for documentation on how to use this method. + Returns the name of this section, if any. + + The section's name, or null. + - + - Implement this method to receive a callback after unity serialized your object. + Raw data section, unnamed and no Content-Type header. + Data payload of this section. - + - Joint is the base class for all joints. + Raw data section with a section name, no Content-Type header. + Section name. + Data payload of this section. - + - The Position of the anchor around which the joints motion is constrained. + 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. - + - Should the connectedAnchor be calculated automatically? + 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. - + - The Direction of the axis around which the body is constrained. + 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. - + - The force that needs to be applied for this joint to break. + 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. - + - The torque that needs to be applied for this joint to break. + An anonymous raw data section whose payload is derived from a UTF8 string, with a default Content-Type. + String data payload for this section. - + - Position of the anchor relative to the connected Rigidbody. + A helper object for adding file uploads to multipart forms via the [IMultipartFormSection] API. - + - A reference to another rigidbody this joint connects to. + Returns the value of the section's Content-Type header. + + The Content-Type header for this section, or null. + - + - Enable collision between bodies connected with the joint. + 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. + - + - Toggle preprocessing for this joint. + 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. + - + - Parent class for joints to connect Rigidbody2D objects. + Returns the name of this section, if any. + + The section's name, or null. + - + - The force that needs to be applied for this joint to break. + 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. - + - The torque that needs to be applied for this joint to break. + 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. - + - Can the joint collide with the other Rigidbody2D object to which it is attached? + 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. - + - The Rigidbody2D object to which the other end of the joint is attached (ie, the object without the joint component). + 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. - + - Should the two rigid bodies connected with this joint collide with each other? + 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. - + - Gets the reaction force of the joint. + 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. - + - Gets the reaction torque of the joint. + Possible Networking.NetworkTransport errors. - + - Gets the reaction force of the joint given the specified timeStep. + Not a data message. - 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 Networking.ConnectionConfig does not match the other endpoint. - 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. + The address supplied to connect to was invalid or could not be resolved. - + - Upper angular limit of rotation. + The message is too long to fit the buffer. - + - Lower angular limit of rotation. + Not enough resources are available to process this request. - + - How the joint's movement will behave along its local X axis. + The operation completed successfully. - + - Amount of force applied to push the object toward the defined direction. + Connection timed out. - + - Whether the drive should attempt to reach position, velocity, both or nothing. + This error will occur if any function is called with inappropriate parameter values. - + - Resistance strength against the Position Spring. Only used if mode includes Position. + The protocol versions are not compatible. Check your library versions. - + - Strength of a rubber-band pull toward the defined direction. Only used if mode includes Position. + The specified channel doesn't exist. - + - The ConfigurableJoint attempts to attain position / velocity targets based on this flag. + The specified connectionId doesn't exist. - + - Don't apply any forces to reach the target. + The specified host not available. - + - Try to reach the specified target position. + Operation is not supported. - + - Try to reach the specified target position and velocity. + Event that is returned when calling the Networking.NetworkTransport.Receive and Networking.NetworkTransport.ReceiveFromHost functions. - + - Try to reach the specified target velocity. + Broadcast discovery event received. +To obtain sender connection info and possible complimentary message from them, call Networking.NetworkTransport.GetBroadcastConnectionInfo() and Networking.NetworkTransport.GetBroadcastConnectionMessage() functions. - + - JointLimits is used by the HingeJoint to limit the joints angle. + Connection event received. Indicating that a new connection was established. - + - The minimum impact velocity which will cause the joint to bounce. + Data event received. Indicating that data was received. - + - Determines the size of the bounce when the joint hits it's limit. Also known as restitution. + Disconnection event received. - + - Distance inside the limit value at which the limit will be considered to be active by the solver. + No new event was received. - + - The upper angular limit (in degrees) of the joint. + Transport Layer API. - + - The lower angular limit (in degrees) of the joint. + 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. + - + - Represents the state of a joint limit. + 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. + - + - Represents a state where the joint limit is at the specified lower and upper limits (they are identical). + Created web socket host. + Port to bind to. + The Networking.HostTopology associated with the host. + IP address to bind to. + + Web socket host id. + - + - Represents a state where the joint limit is inactive. + Created web socket host. + Port to bind to. + The Networking.HostTopology associated with the host. + IP address to bind to. + + Web socket host id. + - + - Represents a state where the joint limit is at the specified lower limit. + 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). + - + - Represents a state where the joint limit is at the specified upper limit. + 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. - + - The JointMotor is used to motorize a joint. + 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). + - + - The motor will apply a force. - + 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). + - + - If freeSpin is enabled the motor will only accelerate but never slow down. - + 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). + - + - The motor will apply a force up to force to achieve targetVelocity. + 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). + - + - Parameters for the optional motor force applied to a Joint2D. + 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). - + - The maximum force that can be applied to the Rigidbody2D at the joint to attain the target speed. + 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). - + - The desired speed for the Rigidbody2D to reach as it moves with the joint. + 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). - + - Determines how to snap physics joints back to its constrained position when it drifts off too much. + 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. + - + - Don't snap at all. + 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. + - + - Snap both position and rotation. + 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). - + - Snap Position only. + 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). - + - JointSpring is used add a spring force to HingeJoint and PhysicMaterial. + 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. - + - The damper force uses to dampen the spring. + Returns the number of unread messages in the read-queue. - + - The spring forces used to reach the target position. + Returns the total number of messages still in the write-queue. - + - The target position the joint attempts to reach. + 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. + - + - Joint suspension is used to define how suspension works on a WheelJoint2D. + 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. + - + - The world angle (in degrees) along which the suspension will move. + 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. + - + - The amount by which the suspension spring force is reduced in proportion to the movement speed. + Returns how many packets have been received from start. (from Networking.NetworkTransport.Init call). + + Packets count received from start for all hosts. + - + - The frequency at which the suspension spring oscillates. + How many packets have been dropped due lack space in incoming queue (absolute value, countinf from start). + + Dropping packet count. + - + - Motion limits of a Rigidbody2D object along a SliderJoint2D. + 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. + - + - Maximum distance the Rigidbody2D object can move from the Slider Joint's anchor. + 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. + - + - Minimum distance the Rigidbody2D object can move from the Slider Joint's anchor. + Function returns time spent on network I/O operations in microseconds. + + Time in micro seconds. + - + - Utility functions for working with JSON data. + 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). - + - Create an object from its JSON representation. + Get a network timestamp. Can be used in your messages to investigate network delays together with Networking.GetRemoteDelayTimeMS. - The JSON representation of the object. - The type of object represented by the JSON. - An instance of the object. + Timestamp. - + - Create an object from its JSON representation. + Returns how much raw data (in bytes) have been sent from start for all hosts (from Networking.NetworkTransport.Init call). - The JSON representation of the object. - The type of object represented by the JSON. - An instance of the object. + Total data (user payload, protocol specific data, ip and udp headers) (in bytes) sent from start for all hosts. - - - 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. + 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). - 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. + Host ID associated with this connection. + ID of the connection. + Error (can be cast to Networking.NetworkError for more information). - The object's data in JSON format. + Total data (user payload, protocol specific data, ip and udp headers) (in bytes) sent from start for connection. - + - Generate a JSON representation of the public fields of an object. + Returns how much raw data (in bytes) have been sent from start for the host (from call Networking.NetworkTransport.AddHost). - 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. + ID of the host. + Error (can be cast to Networking.NetworkError for more information). - The object's data in JSON format. + Total data (user payload, protocol specific data, ip and udp headers) (in bytes) sent from start for the host. - + - Key codes returned by Event.keyCode. These map directly to a physical key on the keyboard. + 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. + - + - 'a' key. + 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. + - + - The '0' key on the top of the alphanumeric keyboard. + 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. + - + - The '1' key on the top of the alphanumeric keyboard. + 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. + - + - The '2' key on the top of the alphanumeric keyboard. + 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. + - + - The '3' key on the top of the alphanumeric keyboard. + 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. + - + - The '4' key on the top of the alphanumeric keyboard. + 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. + - + - The '5' key on the top of the alphanumeric keyboard. + 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. + - + - The '6' key on the top of the alphanumeric keyboard. + 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. + - + - The '7' key on the top of the alphanumeric keyboard. + 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. + - + - The '8' key on the top of the alphanumeric keyboard. + 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. + - + - The '9' key on the top of the alphanumeric keyboard. + 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. + - + - Alt Gr key. + 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. + - + - Ampersand key '&'. + 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. + - + - Asterisk key '*'. + 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. + - + - At key '@'. + 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). - + - 'b' key. + 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). - + - Back quote key '`'. + 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). - + - Backslash key '\'. + 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). - + - The backspace key. + Initializes the NetworkTransport. Should be called before any other operations on the NetworkTransport are done. - + - Break key. + Check if the broadcast discovery sender is running. + + True if it is running. False if it is not running. + - + - 'c' key. + Deprecated. - + - Capslock key. + 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. + - + - Caret key '^'. + 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. + - + - The Clear key. + 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. + - + - Colon ':' key. + 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. + - + - Comma ',' key. + Closes the opened socket, and closes all connections belonging to that socket. + Host ID to remove. - + - 'd' key. + 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). - + - The forward delete key. + 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). - + - Dollar sign key '$'. + 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. + - + - Double quote key '"'. + 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). - + - Down arrow key. + Used to inform the profiler of network packet statistics. + The ID of the message being reported. + Number of message being reported. + Number of bytes used by reported messages. - + - 'e' key. + Shut down the NetworkTransport. - + - End key. + 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. + - + - Equals '=' key. + 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). - + - Escape key. + Stop sending the broadcast discovery message. - + - Exclamation mark key '!'. + Arguments passed to Action callbacks registered in PlayerConnection. - + - 'f' key. + Data that is received. - + - F1 function key. + The Player ID that the data is received from. - + - F10 function key. + Used for handling the network connection from the Player to the Editor. - + - F11 function key. + Singleton instance. - + - F12 function key. + Returns true when Editor is connected to the player. - + - F13 function key. + 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. - + - F14 function key. + 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. - + - F15 function key. + Registers a callback to be called when Editor disconnects. + The Action that is called when a Player disconnects. - + - F2 function key. + Sends data to the Editor. + The type ID of the message that is sent to the Editor. + - + - F3 function key. + Deregisters a message listener. + Message ID associated with the callback that you wish to deregister. + The associated callback function you wish to deregister. - + - F4 function key. + Enumeration of all supported quality of service channel modes. - + - F5 function key. + A reliable message that will be re-sent with a high frequency until it is acknowledged. - + - F6 function key. + Each message is guaranteed to be delivered but not guaranteed to be in order. - + - F7 function key. + Each message is guaranteed to be delivered, also allowing fragmented messages with up to 32 fragments per message. - + - F8 function key. + Each message is guaranteed to be delivered and in order. - + - F9 function key. + 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. - + - 'g' key. + 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. - + - Greater than '>' key. + There is no guarantee of delivery or ordering. - + - 'h' key. + There is no guarantee of delivery or ordering, but allowing fragmented messages with up to 32 fragments per message. - + - Hash key '#'. + There is no guarantee of delivery and all unordered messages will be dropped. Example: VoIP. - + - Help key. + Define how unet will handle network io operation. - + - Home key. + 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. - + - 'i' key. + 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). - + - Insert key key. + The AppID identifies the application on the Unity Cloud or UNET servers. - + - 'j' key. + Invalid AppID. - + - Button 0 on first joystick. + An Enum representing the priority of a client in a match, starting at 0 and increasing. - + - Button 1 on first joystick. + The Invalid case for a HostPriority. An Invalid host priority is not a valid host. - + - Button 10 on first joystick. + Describes the access levels granted to this client. - + - Button 11 on first joystick. + Administration access level, generally describing clearence to perform game altering actions against anyone inside a particular match. - + - Button 12 on first joystick. + Invalid access level, signifying no access level has been granted/specified. - + - Button 13 on first joystick. + Access level Owner, generally granting access for operations key to the peer host server performing it's work. - + - Button 14 on first joystick. + User access level. This means you can do operations which affect yourself only, like disconnect yourself from the match. - + - Button 15 on first joystick. + Access token used to authenticate a client session for the purposes of allowing or disallowing match operations requested by that client. - + - Button 16 on first joystick. + Binary field for the actual token. - + - Button 17 on first joystick. + Accessor to get an encoded string from the m_array data. - + - Button 18 on first joystick. + 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). - + - Button 19 on first joystick. + Network ID, used for match making. - + - Button 2 on first joystick. + Invalid NetworkID. - + - Button 3 on first joystick. + The NodeID is the ID used in Relay matches to track nodes in a network. - + - Button 4 on first joystick. + The invalid case of a NodeID. - + - Button 5 on first joystick. + Identifies a specific game instance. - + - Button 6 on first joystick. + Invalid SourceID. - + - Button 7 on first joystick. + The UnityWebRequest object is used to communicate with web servers. - + - Button 8 on first joystick. + Indicates whether the UnityWebRequest system should employ the HTTP/1.1 chunked-transfer encoding method. - + - Button 9 on first joystick. + If true, any DownloadHandler attached to this UnityWebRequest will have DownloadHandler.Dispose called automatically when UnityWebRequest.Dispose is called. - + - Button 0 on second joystick. + If true, any UploadHandler attached to this UnityWebRequest will have UploadHandler.Dispose called automatically when UnityWebRequest.Dispose is called. - + - Button 1 on second joystick. + Returns the number of bytes of body data the system has downloaded from the remote server. (Read Only) - + - Button 10 on second joystick. + Holds a reference to a DownloadHandler object, which manages body data received from the remote server by this UnityWebRequest. - + - Button 11 on second joystick. + Returns a floating-point value between 0.0 and 1.0, indicating the progress of downloading body data from the server. (Read Only) - + - Button 12 on second joystick. + A human-readable string describing any system errors encountered by this UnityWebRequest object while handling HTTP requests or responses. (Read Only) - + - Button 13 on second joystick. + Returns true after the UnityWebRequest has finished communicating with the remote server. (Read Only) - + - Button 14 on second joystick. + Returns true after this UnityWebRequest encounters a system error. (Read Only) - + - Button 15 on second joystick. + Returns true while a UnityWebRequest’s configuration properties can be altered. (Read Only) - + - Button 16 on second joystick. + The string "CREATE", commonly used as the verb for an HTTP CREATE request. - + - Button 17 on second joystick. + The string "DELETE", commonly used as the verb for an HTTP DELETE request. - + - Button 18 on second joystick. + The string "GET", commonly used as the verb for an HTTP GET request. - + - Button 19 on second joystick. + The string "HEAD", commonly used as the verb for an HTTP HEAD request. - + - Button 2 on second joystick. + The string "POST", commonly used as the verb for an HTTP POST request. - + - Button 3 on second joystick. + The string "PUT", commonly used as the verb for an HTTP PUT request. - + - Button 4 on second joystick. + Defines the HTTP verb used by this UnityWebRequest, such as GET or POST. - + - Button 5 on second joystick. + Indicates the number of redirects which this UnityWebRequest will follow before halting with a “Redirect Limit Exceeded” system error. - + - Button 6 on second joystick. + The numeric HTTP response code returned by the server, such as 200, 404 or 500. (Read Only) - + - Button 7 on second joystick. + Returns the number of bytes of body data the system has uploaded to the remote server. (Read Only) - + - Button 8 on second joystick. + Holds a reference to the UploadHandler object which manages body data to be uploaded to the remote server. - + - Button 9 on second joystick. + Returns a floating-point value between 0.0 and 1.0, indicating the progress of uploading body data to the server. - + - Button 0 on third joystick. + Defines the target URL for the UnityWebRequest to communicate with. - + - Button 1 on third joystick. + Determines whether this UnityWebRequest will include Expect: 100-Continue in its outgoing request headers. (Default: true). - + - Button 10 on third joystick. + If in progress, halts the UnityWebRequest as soon as possible. - + - Button 11 on third joystick. + 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. - + - Button 12 on third joystick. + 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. - + - Button 13 on third joystick. + 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. + - + - Button 14 on third joystick. + Signals that this [UnityWebRequest] is no longer being used, and should clean up any resources it is using. - + - Button 15 on third joystick. + Generate a random 40-byte array for use as a multipart form boundary. + + 40 random bytes, guaranteed to contain only printable ASCII values. + - + - Button 16 on third joystick. + 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. + - + - Button 17 on third joystick. + 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 UnityWebRequest configured to downloading a Unity Asset Bundle. + - + - Button 18 on third joystick. + 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 UnityWebRequest configured to downloading a Unity Asset Bundle. + - + - Button 19 on third joystick. + 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 UnityWebRequest configured to downloading a Unity Asset Bundle. + - + - Button 2 on third joystick. + Create a UnityWebRequest intended 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. + - + - Button 3 on third joystick. + 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. + - + - Button 4 on third joystick. + 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. + - + - Button 5 on third joystick. + 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. + - + - Button 6 on third joystick. + 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. + - + - Button 7 on third joystick. + 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. + - + - Button 8 on third joystick. + 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. + - + - Button 9 on third joystick. + 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 body data. Will be URLEncoded via WWWTranscoder.URLEncode prior to transmission. + + A UnityWebRequest configured to send form data to uri via POST. + - + - Button 0 on forth joystick. + 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. + - + - Button 1 on forth joystick. + 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. + - + - Button 10 on forth joystick. + 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. + - + - Button 11 on forth joystick. + 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. + - + - Button 12 on forth joystick. + Create 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. + - + - Button 13 on forth joystick. + Create 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. + - + - Button 14 on forth joystick. + 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. + - + - Button 15 on forth joystick. + 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. + - + - Button 16 on forth joystick. + 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. + - + - Button 17 on forth joystick. + Set a HTTP request header to a custom value. + The key of the header to be set. Case-sensitive. + The header's intended value. - + - Button 18 on forth joystick. + Helper object for UnityWebRequests. Manages the buffering and transmission of body data during HTTP requests. - + - Button 19 on forth joystick. + Determines the default Content-Type header which will be transmitted with the outbound HTTP request. - + - Button 2 on forth joystick. + The raw data which will be transmitted to the remote server as body data. (Read Only) - + - Button 3 on forth joystick. + Returns the proportion of data uploaded to the remote server compared to the total amount of data to upload. (Read Only) - + - Button 4 on forth joystick. + Signals that this [UploadHandler] is no longer being used, and should clean up any resources it is using. - + - Button 5 on forth joystick. + A general-purpose UploadHandler subclass, using a native-code memory buffer. - + - Button 6 on forth joystick. + General constructor. Contents of the input argument are copied into a native buffer. + Raw data to transmit to the remote server. - + - Button 7 on forth joystick. + Networking Utility. - + - Button 8 on forth joystick. + This property is deprecated and does not need to be set or referenced. - + - Button 9 on forth joystick. + Utility function to get this client's access token for a particular network, if it has been set. + - + - Button 0 on fifth joystick. + Utility function to fetch the program's ID for UNET Cloud interfacing. - + - Button 1 on fifth joystick. + Utility function to get the client's SourceID for unique identification. - + - Button 10 on fifth joystick. + Utility function that accepts the access token for a network after it's received from the server. + + - + - Button 11 on fifth joystick. + Deprecated; Setting the AppID is no longer necessary. Please log in through the editor and set up the project there. + - + - Button 12 on fifth joystick. + Describes different levels of log information the network layer supports. - + - Button 13 on fifth joystick. + Full debug level logging down to each individual message being reported. - + - Button 14 on fifth joystick. + Report informational messages like connectivity events. - + - Button 15 on fifth joystick. + Only report errors, otherwise silent. - + - Button 16 on fifth joystick. + This data structure contains information on a message just received from the network. - + - Button 17 on fifth joystick. + The NetworkView who sent this message. - + - Button 18 on fifth joystick. + The player who sent this network message (owner). - + - Button 19 on fifth joystick. + The time stamp when the Message was sent in seconds. - + - Button 2 on fifth joystick. + Describes the status of the network interface peer type as returned by Network.peerType. - + - Button 3 on fifth joystick. + Running as client. - + - Button 4 on fifth joystick. + Attempting to connect to a server. - + - Button 5 on fifth joystick. + No client connection running. Server not initialized. - + - Button 6 on fifth joystick. + Running as server. - + - Button 7 on fifth joystick. + The NetworkPlayer is a data structure with which you can locate another player over the network. - + - Button 8 on fifth joystick. + Returns the external IP address of the network interface. - + - Button 9 on fifth joystick. + Returns the external port of the network interface. - + - Button 0 on sixth joystick. + The GUID for this player, used when connecting with NAT punchthrough. - + - Button 1 on sixth joystick. + The IP address of this player. - + - Button 10 on sixth joystick. + The port of this player. - + - Button 11 on sixth joystick. + Returns true if two NetworkPlayers are the same player. + + - + - Button 12 on sixth joystick. + Returns true if two NetworkPlayers are not the same player. + + - + - Button 13 on sixth joystick. + Returns the index number for this network player. - + - Button 14 on sixth joystick. + Describes network reachability options. - + - Button 15 on sixth joystick. + Network is not reachable. - + - Button 16 on sixth joystick. + Network is reachable via carrier data network. - + - Button 17 on sixth joystick. + Network is reachable via WiFi or cable. - + - Button 18 on sixth joystick. + Different types of synchronization for the NetworkView component. - + - Button 19 on sixth joystick. + No state data will be synchronized. - + - Button 2 on sixth joystick. + All packets are sent reliable and ordered. - + - Button 3 on sixth joystick. + Brute force unreliable state sending. - + - Button 4 on sixth joystick. + The network view is the binding material of multiplayer games. - + - Button 5 on sixth joystick. + The network group number of this network view. - + - Button 6 on sixth joystick. + Is the network view controlled by this object? - + - Button 7 on sixth joystick. + The component the network view is observing. - + - Button 8 on sixth joystick. + The NetworkPlayer who owns this network view. - + - Button 9 on sixth joystick. + The type of NetworkStateSynchronization set for this network view. - + - Button 0 on seventh joystick. + The ViewID of this network view. - + - Button 1 on seventh joystick. + Find a network view based on a NetworkViewID. + - + - Button 10 on seventh joystick. + Call a RPC function on all connected peers. + + + - + - Button 11 on seventh joystick. + Call a RPC function on a specific player. + + + - + - Button 12 on seventh joystick. + Set the scope of the network view in relation to a specific network player. + + - + - Button 13 on seventh joystick. + The NetworkViewID is a unique identifier for a network view instance in a multiplayer game. - + - Button 14 on seventh joystick. + True if instantiated by me. - + - Button 15 on seventh joystick. + The NetworkPlayer who owns the NetworkView. Could be the server. - + - Button 16 on seventh joystick. + Represents an invalid network view ID. - + - Button 17 on seventh joystick. + Returns true if two NetworkViewIDs are identical. + + - + - Button 18 on seventh joystick. + Returns true if two NetworkViewIDs are not identical. + + - + - Button 19 on seventh joystick. + Returns a formatted string with details on this NetworkViewID. - + - Button 2 on seventh joystick. + NPOT Texture2D|textures support. - + - Button 3 on seventh joystick. + Full NPOT support. - + - Button 4 on seventh joystick. + NPOT textures are not supported. Will be upscaled/padded at loading time. - + - Button 5 on seventh joystick. + Limited NPOT support: no mip-maps and clamp TextureWrapMode|wrap mode will be forced. - + - Button 6 on seventh joystick. + Base class for all objects Unity can reference. - + - Button 7 on seventh joystick. + Should the object be hidden, saved with the scene or modifiable by the user? - + - Button 8 on seventh joystick. + The name of the object. - + - Button 9 on seventh joystick. + Removes a gameobject, component or asset. + The object to destroy. + The optional amount of time to delay before destroying the object. - + - Button 0 on eighth joystick. + Removes a gameobject, component or asset. + The object to destroy. + The optional amount of time to delay before destroying the object. - + - Button 1 on eighth joystick. + 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 destoyed. - + - Button 10 on eighth joystick. + 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 destoyed. - + - Button 11 on eighth joystick. + Makes the object target not be destroyed automatically when loading a new scene. + - + - Button 12 on eighth joystick. + Returns the first active loaded object of Type type. + The type of object to find. + + An array of objects which matched the specified type, cast as Object. + - + - Button 13 on eighth joystick. + 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. + - + - Button 14 on eighth joystick. + 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. + - + - Button 15 on eighth joystick. + 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. + - + - Button 16 on eighth joystick. + Returns the instance id of the object. - + - Button 17 on eighth joystick. + Does the object exist? + - + - Button 18 on eighth joystick. + 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. + - + - Button 19 on eighth joystick. + 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. + - + - Button 2 on eighth joystick. + 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. + - + - Button 3 on eighth joystick. + 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. + - + - Button 4 on eighth joystick. + 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. + - + - Button 5 on eighth joystick. + 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. + - + - Button 6 on eighth joystick. + 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. + - + - Button 7 on eighth joystick. + 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. + - + - Button 8 on eighth joystick. + 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. + - + - Button 9 on eighth joystick. + 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. + - + - Button 0 on any joystick. + Compares two object references to see if they refer to the same object. + The first Object. + The Object to compare against the first. - + - Button 1 on any joystick. + Compares if two objects refer to a different object. + + - + - Button 10 on any joystick. + Returns the name of the game object. - + - Button 11 on any joystick. + OcclusionArea is an area in which occlusion culling is performed. - + - Button 12 on any joystick. + Center of the occlusion area relative to the transform. - + - Button 13 on any joystick. + Size that the occlusion area will have. - + - Button 14 on any joystick. + The portal for dynamically changing occlusion at runtime. - + - Button 15 on any joystick. + Gets / sets the portal's open state. - + - Button 16 on any joystick. + Enumeration for SystemInfo.operatingSystemFamily. - + - Button 17 on any joystick. + Linux operating system family. - + - Button 18 on any joystick. + macOS operating system family. - + - Button 19 on any joystick. + Returned for operating systems that do not fall into any other category. - + - Button 2 on any joystick. + Windows operating system family. - + - Button 3 on any joystick. + (Legacy Particle system). - + - Button 4 on any joystick. + The angular velocity of the particle. - + - Button 5 on any joystick. + The color of the particle. - + - Button 6 on any joystick. + The energy of the particle. - + - Button 7 on any joystick. + The position of the particle. - + - Button 8 on any joystick. + The rotation of the particle. - + - Button 9 on any joystick. + The size of the particle. - + - 'k' key. + The starting energy of the particle. - + - Numeric keypad 0. + The velocity of the particle. - + - Numeric keypad 1. + (Legacy Particles) Particle animators move your particles over time, you use them to apply wind, drag & color cycling to your particle emitters. - + - Numeric keypad 2. + Does the GameObject of this particle animator auto destructs? - + - Numeric keypad 3. + Colors the particles will cycle through over their lifetime. - + - Numeric keypad 4. + How much particles are slowed down every frame. - + - Numeric keypad 5. + Do particles cycle their color over their lifetime? - + - Numeric keypad 6. + The force being applied to particles every frame. - + - Numeric keypad 7. + Local space axis the particles rotate around. - + - Numeric keypad 8. + A random force added to particles every frame. - + - Numeric keypad 9. + How the particle sizes grow over their lifetime. - + - Numeric keypad '/'. + World space axis the particles rotate around. - + - Numeric keypad enter. + Information about a particle collision. - + - Numeric keypad '='. + The Collider for the GameObject struck by the particles. - + - Numeric keypad '-'. + The Collider or Collider2D for the GameObject struck by the particles. - + - Numeric keypad '*'. + Intersection point of the collision in world coordinates. - + - Numeric keypad '.'. + Geometry normal at the intersection point of the collision. - + - Numeric keypad '+'. + Incident velocity at the intersection point of the collision. - + - 'l' key. + (Legacy Particles) Script interface for particle emitters. - + - Left Alt key. + The angular velocity of new particles in degrees per second. - + - Left Command key. + Should particles be automatically emitted each frame? - + - Left arrow key. + The amount of the emitter's speed that the particles inherit. - + - Left square bracket key '['. + Turns the ParticleEmitter on or off. - + - Left Command key. + The starting speed of particles along X, Y, and Z, measured in the object's orientation. - + - Left Control key. + The maximum number of particles that will be spawned every second. - + - Left Parenthesis key '('. + The maximum lifetime of each particle, measured in seconds. - + - Left shift key. + The maximum size each particle can be at the time when it is spawned. - + - Left Windows key. + The minimum number of particles that will be spawned every second. - + - Less than '<' key. + The minimum lifetime of each particle, measured in seconds. - + - 'm' key. + The minimum size each particle can be at the time when it is spawned. - + - Menu key. + The current number of particles (Read Only). - + - Minus '-' key. + Returns a copy of all particles and assigns an array of all particles to be the current particles. - + - First (primary) mouse button. + A random angular velocity modifier for new particles. - + - Second (secondary) mouse button. + If enabled, the particles will be spawned with random rotations. - + - Third mouse button. + A random speed along X, Y, and Z that is added to the velocity. - + - Fourth mouse button. + If enabled, the particles don't move when the emitter moves. If false, when you move the emitter, the particles follow it around. - + - Fifth mouse button. + The starting speed of particles in world space, along X, Y, and Z. - + - Sixth mouse button. + Removes all particles from the particle emitter. - + - Seventh mouse button. + Emit a number of particles. - + - 'n' key. + Emit count particles immediately. + - + - Not assigned (never returned as the result of a keystroke). + Emit a single particle with given parameters. + The position of the particle. + The velocity of the particle. + The size of the particle. + The remaining lifetime of the particle. + The color of the particle. - + - Numlock key. + + The initial rotation of the particle in degrees. + The angular velocity of the particle in degrees per second. + + + + + - + - 'o' key. + Advance particle simulation by given time. + - + - 'p' key. + Method extension for Physics in Particle System. - + - Page down. + 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. + - + - Page up. + Safe array size for use with ParticleSystem.GetCollisionEvents. + - + - Pause on PC machines. + 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. + - + - Period '.' key. + 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. + - + - Plus key '+'. + 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. - + - Print key. + 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. - + - 'q' key. + (Legacy Particles) Renders particles on to the screen. - + - Question mark '?' key. + How much are the particles strected depending on the Camera's speed. - + - Quote key '. + How much are the particles stretched in their direction of motion. - + - 'r' key. + Clamp the maximum particle size. - + - Return key. + How particles are drawn. - + - Right Alt key. + Set uv animation cycles. - + - Right Command key. + Set horizontal tiling count. - + - Right arrow key. + Set vertical tiling count. - + - Right square bracket key ']'. + How much are the particles strectched depending on "how fast they move". - + - Right Command key. + The rendering mode for legacy particles. - + - Right Control key. + Render the particles as billboards facing the player. (Default) - + - Right Parenthesis key ')'. + Render the particles as billboards always facing up along the y-Axis. - + - Right shift key. + Sort the particles back-to-front and render as billboards. - + - Right Windows key. + Stretch particles in the direction of motion. - + - 's' key. + Render the particles as billboards always facing the player, but not pitching along the x-Axis. - + - Scroll lock key. + Script interface for particle systems (Shuriken). - + - Semicolon ';' key. + Access the particle system collision module. - + - Slash '/' key. + Access the particle system color by lifetime module. - + - Space key. + Access the particle system color over lifetime module. - + - Sys Req key. + Access the particle system Custom Data module. - + - 't' key. + The duration of the particle system in seconds (Read Only). - + - The tab key. + Access the particle system emission module. - + - 'u' key. + The rate of emission. - + - Underscore '_' key. + When set to false, the particle system will not emit particles. - + - Up arrow key. + Access the particle system external forces module. - + - 'v' key. + Access the particle system force over lifetime module. - + - 'w' key. + Scale being applied to the gravity defined by Physics.gravity. - + - 'x' key. + Access the particle system velocity inheritance module. - + - 'y' key. + Is the particle system currently 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. - + - 'z' key. + Is the particle system paused right now ? - + - A single keyframe that can be injected into an animation curve. + Is the particle system playing right now ? - + - Describes the tangent when approaching this point from the previous point in the curve. + Is the particle system stopped right now ? - + - Describes the tangent when leaving this point towards the next point in the curve. + Access the particle system lights module. - + - The time of the keyframe. + Access the particle system limit velocity over lifetime module. - + - The value of the curve at keyframe. + Is the particle system looping? - + - Create a keyframe. + Access the main particle system settings. - - - + - Create a keyframe. + The maximum number of particles to emit. - - - - - + - LayerMask allow you to display the LayerMask popup menu in the inspector. + Access the particle system noise module. - + - Converts a layer mask value to an integer value. + The current number of particles (Read Only). - + - 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. + The playback speed of the particle system. 1 is normal playback speed. - List of layer names to convert to a layer mask. - - The layer mask created from the layerNames. - - + - Implicitly converts an integer to a LayerMask. + If set to true, the particle system will automatically start playing on startup. - - + - Given a layer number, returns the name of the layer as defined in either a Builtin or a User Layer in the. + Override the random seed used for the particle system emission. - - + - Given a layer name, returns the layer index as defined by either a Builtin or a User Layer in the. + Access the particle system rotation by speed module. - - + - Script interface for a. + Access the particle system rotation over lifetime module. - + - The strength of the flare. + The scaling mode applied to particle sizes and positions. - + - The color of the flare. + Access the particle system shape module. - + - The fade speed of the flare. + This selects the space in which to simulate particles. It can be either world or local space. - + - The to use. + Access the particle system size by speed module. - + - Script interface for. + Access the particle system size over lifetime module. - + - Has the light already been lightmapped. + The initial color of particles when emitted. - + - The size of the area light. Editor only. + Start delay in seconds. - + - The multiplier that defines the strength of the bounce lighting. + The total lifetime in seconds that particles will have when emitted. When using curves, this values acts as a scale on the curve. This value is set in the particle when it is created by the particle system. - + - The color of the light. + The initial rotation of particles when emitted. When using curves, this values acts as a scale on the curve. - + - Number of command buffers set up on this light (Read Only). + The initial 3D rotation of particles when emitted. When using curves, this values acts as a scale on the curves. - + - The cookie texture projected by the light. + The initial size of particles when emitted. When using curves, this values acts as a scale on the curve. - + - The size of a directional light's cookie. + The initial speed of particles when emitted. When using curves, this values acts as a scale on the curve. - + - This is used to light certain objects in the scene selectively. + Access the particle system sub emitters module. - + - The to use for this light. + Access the particle system texture sheet animation module. - + - The Intensity of a light is multiplied with the Light color. + Playback position in seconds. - + - The range of the light. + Access the particle system trails module. - + - How to render the light. + Access the particle system trigger module. - + - Shadow mapping constant bias. + Controls whether the Particle System uses an automatically-generated random number to seed the random number generator. - + - Near plane value to use for shadow frustums. + Access the particle system velocity over lifetime module. - + - Shadow mapping normal-based bias. + Script interface for a Burst. - + - How this light casts shadows + How many times to play the burst. (0 means infinitely). - + - Strength of light's shadows. + Maximum number of bursts to be emitted. - + - The angle of the light's spotlight cone in degrees. + Minimum number of bursts to be emitted. - + - The type of the light. + How often to repeat the burst, in seconds. - + - Add a command buffer to be executed at a specified place. + The time that each burst occurs. - When to execute the command buffer during rendering. - The buffer to execute. - + - Get command buffers to be executed at a specified place. + Construct a new Burst with a time and count. - When to execute the command buffer during rendering. - - Array of command buffers. - + Time to emit the burst. + Minimum number of particles to emit. + Maximum number of particles to emit. + Number of particles to emit. - + - Remove all command buffers set on this light. + 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. - + - Remove command buffer from execution at a specified place. + Remove all particles in the particle system. - When to execute the command buffer during rendering. - The buffer to execute. + Clear all child particle systems as well. - + - Remove command buffers from execution at a specified place. + Script interface for the Collision module. - When to execute the command buffer during rendering. - + - Data of a lightmap. + How much force is applied to each particle after a collision. - + - Lightmap storing the full incoming light. + Change the bounce multiplier. - + - Lightmap storing only the indirect incoming light. + Control which layers this particle system collides with. - + - Stores lightmaps of the scene. + How much speed is lost from each particle after a collision. - + - Lightmap array. + Change the dampen multiplier. - + - Non-directional, Directional or Directional Specular lightmaps rendering mode. + Enable/disable the Collision module. - + - Holds all data needed by the light probes. + Allow particles to collide with dynamic colliders when using world collision mode. - + - Lightmap (and lighting) configuration mode, controls how lightmaps interact with lighting and what kind of information they store. + Allow particles to collide when inside colliders. - + - Directional information for direct light is combined with directional information for indirect light, encoded as 2 lightmaps. + How much a particle's lifetime is reduced after a collision. - + - Light intensity (no directional information), encoded as 1 lightmap. + Change the lifetime loss multiplier. - + - Directional information for direct light is stored separately from directional information for indirect light, encoded as 4 lightmaps. + The maximum number of collision shapes that will be considered for particle collisions. Excess shapes will be ignored. Terrains take priority. - + - Single, dual, or directional lightmaps rendering mode, used only in GIWorkflowMode.Legacy + Kill particles whose speed goes above this threshold, after a collision. - + - Directional rendering mode. + The maximum number of planes it is possible to set as colliders. - + - Dual lightmap rendering mode. + Kill particles whose speed falls below this threshold, after a collision. - + - Single, traditional lightmap rendering mode. + Choose between 2D and 3D world collisions. - + - Light Probe Group. + Specifies the accuracy of particle collisions against colliders in the scene. - + - Editor only function to access and modify probe positions. + A multiplier applied to the size of each particle before collisions are processed. - + - Stores light probes for the scene. + Send collision callback messages. - + - Coefficients of baked light probes. + The type of particle collision to perform. - + - The number of cells space is divided into (Read Only). + Size of voxels in the collision cache. - + - The number of light probes (Read Only). + Get a collision plane associated with this particle system. + Specifies which plane to access. + + The plane. + - + - Positions of the baked light probes (Read Only). + Set a collision plane to be used with this particle system. + Specifies which plane to set. + The plane to set. - + - Returns an interpolated probe for the given position for both realtime and baked light probes combined. + Script interface for the Color By Speed module. - - - - + - How the Light is rendered. + The gradient controlling the particle colors. - + - Automatically choose the render mode. + Enable/disable the Color By Speed module. - + - Force the Light to be a pixel light. + Apply the color gradient between these minimum and maximum speeds. - + - Force the Light to be a vertex light. + Script interface for the Color Over Lifetime module. - + - Shadow casting options for a Light. + The gradient controlling the particle colors. - + - Cast "hard" shadows (with no shadow filtering). + Enable/disable the Color Over Lifetime module. - + - Do not cast shadows (default). + Script interface for the Custom Data module. - + - Cast "soft" shadows (with 4x PCF filtering). + Enable/disable the Custom Data module. - + - The type of a Light. + 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. + - + - The light is an area light. It affects only lightmaps and lightprobes. + 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. + - + - The light is a directional light. + 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. + - + - The light is a point light. + 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. + - + - The light is a spot light. + 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. - + - The line renderer is used to draw free-floating lines in 3D space. + 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. - + - If enabled, the lines are defined in world space. + 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. - + - Set the line color at the start and at the end. + 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. + - + - Set the position of the vertex in the line. + Script interface for the Emission module. - - - + - Set the positions of all vertices in the line. + The current number of bursts. - - + - Set the number of line segments. + Enable/disable the Emission module. - - + - Set the line width at the start and at the end. + The rate at which new particles are spawned. - - - + - Structure describing device location. + Change the rate multiplier. - + - Geographical device location altitude. + The rate at which new particles are spawned, over distance. - + - Horizontal accuracy of the location. + Change the rate over distance multiplier. - + - Geographical device location latitude. + The rate at which new particles are spawned, over time. - + - Geographical device location latitude. + Change the rate over time multiplier. - + - Timestamp (in seconds since 1970) when location was last time updated. + The emission type. - + - Vertical accuracy of the location. + Get the burst array. + Array of bursts to be filled in. + + The number of bursts in the array. + - + - Interface into location functionality. + Set the burst array. + Array of bursts. + Optional array size, if burst count is less than array size. - + - Specifies whether location service is enabled in user settings. + Set the burst array. + Array of bursts. + Optional array size, if burst count is less than array size. - + - Last measured device geographical location. + Emit count particles immediately. + Number of particles to emit. - + - Returns location service status. + Emit a number of particles from script. + Overidden particle properties. + Number of particles to emit. - + - 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. + Script interface for particle emission parameters. - - - + - Stops location service updates. This could be useful for saving battery life. + Override the angular velocity of emitted particles. - + - Describes location service status. + Override the 3D angular velocity of emitted particles. - + - Location service failed (user denied access to location service). + When overriding the position of particles, setting this flag to true allows you to retain the influence of the shape module. - + - Location service is initializing, some time later it will switch to. + Override the axis of rotation of emitted particles. - + - Location service is running and locations could be queried. + Override the position of emitted particles. - + - Location service is stopped. + Override the random seed of emitted particles. - + - Structure for building a LOD for passing to the SetLODs function. + Override the rotation of emitted particles. - + - Width of the cross-fade transition zone (proportion to the current LOD's whole length) [0-1]. Only used if it's not animated. + Override the 3D rotation of emitted particles. - + - List of renderers for this LOD level. + Override the initial color of emitted particles. - + - The screen relative height to use for the transition [0-1]. + Override the lifetime of emitted particles. - + - Construct a LOD. + Override the initial size of emitted particles. - 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. + Override the initial 3D size of emitted particles. - + - 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. + Override the velocity of emitted particles. - + - Indicates the LOD fading is turned off. + Reverts angularVelocity and angularVelocity3D back to the values specified in the inspector. - + - 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. + Revert the axis of rotation back to the value specified in the inspector. - + - LODGroup lets you group multiple Renderers into LOD levels. + Revert the position back to the value specified in the inspector. - + - Specify if the cross-fading should be animated by time. The animation duration is specified globally as crossFadeAnimationDuration. + Revert the random seed back to the value specified in the inspector. - + - The cross-fading animation duration in seconds. ArgumentException will be thrown if it is set to zero or a negative value. + Reverts rotation and rotation3D back to the values specified in the inspector. - + - Enable / Disable the LODGroup - Disabling will turn off all renderers. + Revert the initial color back to the value specified in the inspector. - + - The LOD fade mode used. + Revert the lifetime back to the value specified in the inspector. - + - The local reference point against which the LOD distance is calculated. + Revert the initial size back to the value specified in the inspector. - + - The number of LOD levels. + Revert the velocity back to the value specified in the inspector. - + - The size of the LOD object in local space. + Script interface for the External Forces module. - + - + Enable/disable the External Forces module. - The LOD level to use. Passing index < 0 will return to standard LOD processing. - + - Returns the array of LODs. + Multiplies the magnitude of applied external forces. - - The LOD array. - - + - Recalculate the bounding region for the LODGroup (Relatively slow, do not call often). + Script interface for the Force Over Lifetime module. - + - Set the LODs for the LOD group. This will remove any existing LODs configured on the LODGroup. + Enable/disable the Force Over Lifetime module. - The LODs to use for this group. - + - Initializes a new instance of the Logger. + When randomly selecting values between two curves or constants, this flag will cause a new random force to be chosen on each frame. - + - To selective enable debug log message. + Are the forces being applied in local or world space? - + - To runtime toggle debug logging [ON/OFF]. + The curve defining particle forces in the X axis. - + - Set Logger.ILogHandler. + Change the X axis mulutiplier. - + - Create a custom Logger. + The curve defining particle forces in the Y axis. - Pass in default log handler or custom log handler. - + - Check logging is enabled based on the LogType. + Change the Y axis multiplier. - 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 curve defining particle forces in the Z axis. - 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. + Change the Z axis multiplier. - 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. + Get a stream of custom per-particle data. - 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. + The array of per-particle data. + Which stream to retrieve the data from. + + The amount of valid per-particle data. + - + - Logs message to the Unity Console using default logger. + Get the particles of this particle system. - 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. + Particle buffer that is used for writing particle state to. The return value is the number of particles written to this array. + + The number of particles written to the input particle array (the number of particles currently alive). + - + - Logs message to the Unity Console using default logger. + The Inherit Velocity Module controls how the velocity of the emitter is transferred to the particles as they are emitted. - 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. + Curve to define how much emitter velocity is applied during the lifetime of a particle. - 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. + Change the curve multiplier. - 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. + Enable/disable the InheritVelocity module. - 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. + How to apply emitter velocity to particles. - 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. + Does the system have any live particles (or will produce more)? - Runtime Exception. - Object to which the message applies. + Check all child particle systems as well. + + True if the particle system is still "alive", false if the particle system is done emitting particles and all particles are dead. + - + - A variant of Logger.Log that logs an exception message. + Access the ParticleSystem Lights Module. - Runtime Exception. - Object to which the message applies. - + - Logs a formatted message. + Toggle whether the particle alpha gets multiplied by the light intensity, when computing the final light intensity. - The type of the log message. - Object to which the message applies. - A composite format string. - Format arguments. - + - Logs a formatted message. + Enable/disable the Lights module. - 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. + Define a curve to apply custom intensity scaling to particle lights. - 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. + Intensity multiplier. - 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.logger.Log or delegate registered with Application.RegisterLogCallback. + Select what Light prefab you want to base your particle lights on. - + - LogType used for Asserts. (These could also indicate an error inside Unity itself.) + Set a limit on how many lights this Module can create. - + - LogType used for Errors. + Define a curve to apply custom range scaling to particle lights. - + - LogType used for Exceptions. + Range multiplier. - + - LogType used for regular log messages. + Choose what proportion of particles will receive a dynamic light. - + - LogType used for Warnings. + Toggle where the particle size will be multiplied by the light range, to determine the final light range. - + - The Master Server is used to make matchmaking between servers and clients easy. + Toggle whether the particle lights will have their color multiplied by the particle color. - + - Report this machine as a dedicated server. + Randomly assign lights to new particles based on ParticleSystem.LightsModule.ratio. - + - The IP address of the master server. + Script interface for the Limit Velocity Over Lifetime module. - + - The connection port of the master server. + Controls how much the velocity that exceeds the velocity limit should be dampened. - + - Set the minimum update rate for master server host information update. + Enable/disable the Limit Force Over Lifetime module. - + - Clear the host list which was received by MasterServer.PollHostList. + Maximum velocity curve, when not using one curve per axis. - + - Check for the latest host list received by using MasterServer.RequestHostList. + Change the limit multiplier. - + - Register this server on the master server. + Maximum velocity curve for the X axis. - - - - + - Register this server on the master server. + Change the limit multiplier on the X axis. - - - - + - Request a host list from the master server. + Maximum velocity curve for the Y axis. - - + - Unregister this server from the master server. + Change the limit multiplier on the Y axis. - + - Describes status messages from the master server as returned in MonoBehaviour.OnMasterServerEvent|OnMasterServerEvent. + Maximum velocity curve for the Z axis. - + - Received a host list from the master server. + Change the limit multiplier on the Z axis. - + - Registration failed because an empty game name was given. + Set the velocity limit on each axis separately. - + - Registration failed because an empty game type was given. + Specifies if the velocity limits are in local space (rotated with the transform) or world space. - + - Registration failed because no server is running. + Script interface for the main module. - + - Registration to master server succeeded, received confirmation. + Simulate particles relative to a custom transform component. - + - To specify position and rotation weight mask for Animator::MatchTarget. + The duration of the particle system in seconds. - + - Position XYZ weight. + Scale applied to the gravity, defined by Physics.gravity. - + - Rotation weight. + Change the gravity mulutiplier. - + - MatchTargetWeightMask contructor. + Is the particle system looping? - Position XYZ weight. - Rotation weight. - + - The material class. + The maximum number of particles to emit. - + - The main material's color. + If set to true, the particle system will automatically start playing on startup. - + - Defines how the material should interact with lightmaps and lightprobes. + When looping is enabled, this controls whether this particle system will look like it has already simulated for one loop when first becoming visible. - + - The material's texture. + Cause some particles to spin in the opposite direction. - + - The texture offset of the main texture. + Control how the particle system's Transform Component is applied to the particle system. - + - The texture scale of the main texture. + This selects the space in which to simulate particles. It can be either world or local space. - + - How many passes are in this material (Read Only). + Override the default playback speed of the Particle System. - + - Render queue of this material. + The initial color of particles when emitted. - + - The shader used by the material. + Start delay in seconds. - + - Additional shader keywords set by this material. + Start delay multiplier in seconds. - + - Copy properties from other material into this material. + The total lifetime in seconds that each new particle will have. - - + - + Start lifetime multiplier. - - + - Create a temporary Material. + The initial rotation of particles when emitted. - Create a material with a given Shader. - Create a material by copying all properties from another material. - + - Create a temporary Material. + A flag to enable 3D particle rotation. - Create a material with a given Shader. - Create a material by copying all properties from another material. - + - Unset a shader keyword. + Start rotation multiplier. - - + - Set a shader keyword that is enabled by this material. + The initial rotation of particles around the X axis when emitted. - - + - Get a named color value. + Start rotation multiplier around the X axis. - - - + - Get a named color value. + The initial rotation of particles around the Y axis when emitted. - - - + - Get a named float value. + Start rotation multiplier around the Y axis. - - - + - Get a named float value. + The initial rotation of particles around the Z axis when emitted. - - - + - Get a named integer value. + Start rotation multiplier around the Z axis. - - - + - Get a named integer value. + The initial size of particles when emitted. - - - + - Get a named matrix value from the shader. + A flag to enable specifying particle size individually for each axis. - - - + - Get a named matrix value from the shader. + Start size multiplier. - - - + - Get the value of material's shader tag. + The initial size of particles along the X axis when emitted. - - - - + - Get the value of material's shader tag. + Start rotation multiplier along the X axis. - - - - + - Get a named texture. + The initial size of particles along the Y axis when emitted. - - - + - Get a named texture. + Start rotation multiplier along the Y axis. - - - + - Gets the placement offset of texture propertyName. + The initial size of particles along the Z axis when emitted. - - + - Gets the placement scale of texture propertyName. + Start rotation multiplier along the Z axis. - - + - Get a named vector value. + The initial speed of particles when emitted. - - - + - Get a named vector value. + A multiplier of the initial speed of particles when emitted. - - - + - Checks if material's shader has a property of a given name. + Script interface for a Min-Max Curve. - - - + - Checks if material's shader has a property of a given name. + Set the constant value. - - - + - Is the shader keyword enabled on this material? + Set a constant for the upper bound. - - + - Interpolate properties between two materials. + Set a constant for the lower bound. - - - - + - Set a ComputeBuffer value. + Set the curve. - - - + - Set a named color value. + Set a curve for the upper bound. - - - - + - Set a named color value. + Set a curve for the lower bound. - - - - + - Set a named float value. + Set a multiplier to be applied to the curves. - - - - + - Set a named float value. + Set the mode that the min-max curve will use to evaluate values. - - - - + - Set a named integer value. - -When setting values on materials using the Standard Shader, you should be aware that you may need to use EnableKeyword to enable features of the shader that were not previously in use. For more detail, read wiki: -MaterialsAccessingViaScript|Accessing Materials via Script. + A single constant value for the entire curve. - - - + Constant value. - + - Set a named integer value. - -When setting values on materials using the Standard Shader, you should be aware that you may need to use EnableKeyword to enable features of the shader that were not previously in use. For more detail, read wiki: -MaterialsAccessingViaScript|Accessing Materials via Script. + 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. + - + - Set a named matrix for the shader. + 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. + - + - Set a named matrix for the shader. + 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. - + - Sets an override tag/value on the material. + Manually query the curve to calculate values based on what mode it is in. - Name of the tag to set. - Name of the value to set. Empty string to clear the override flag. + 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. + - + - Activate the given pass for rendering. + Manually query the curve to calculate values based on what mode it is in. - Shader pass number to setup. + 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). - If false is returned, no rendering should be done. + Calculated curve/constant value. - + - Set a named texture. + 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 named texture. + Set a constant color. - - - - + - Sets the placement offset of texture propertyName. + Set a constant color for the upper bound. - - - + - Sets the placement scale of texture propertyName. + Set a constant color for the lower bound. - - - + - Set a named vector value. + Set the gradient. - - - - + - Set a named vector value. + Set a gradient for the upper bound. - - - - + - How the material should interact with lightmaps and lightprobes. + Set a gradient for the lower bound. - + - The emissive lighting should affect Global Illumination. It should emit lighting into baked lightmaps and baked lightprobes. + Set the mode that the min-max gradient will use to evaluate colors. - + - 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. + A single constant color for the entire gradient. + Constant color. - + - The emissive lighting should not affect Global Illumination at all. + Use one gradient when evaluating numbers along this Min-Max gradient. + A single gradient for evaluating against. - + - The emissive lighting should affect Global Illumination. It should emit lighting into realtime lightmaps and realtime lightprobes. + 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. - + - A block of material values to apply. + 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. - + - Is the material property block empty? (Read Only) + 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. + - + - Clear material property values. + 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. + - + - Get a float from the property block. + 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. - - - + - Get a float from the property block. + Higher frequency noise will reduce the strength by a proportional amount, if enabled. - - - + - Get a matrix from the property block. + Enable/disable the Noise module. - - - + - Get a matrix from the property block. + Low values create soft, smooth noise, and high values create rapidly changing noise. - - - + - Get a texture from the property block. + Layers of noise that combine to produce final noise. - - - + - Get a texture from the property block. + When combining each octave, scale the intensity by this amount. - - - + - Get a vector from the property block. + When combining each octave, zoom in by this amount. - - - + - Get a vector from the property block. + Generate 1D, 2D or 3D noise. - - - + - Set a color property. + Define how the noise values are remapped. - - - - + - Set a color property. + Enable remapping of the final noise values, allowing for noise values to be translated into different values. - - - - + - Set a float property. + Remap multiplier. - - - - + - Set a float property. + Define how the noise values are remapped on the X axis, when using the ParticleSystem.NoiseModule.separateAxes option. - - - - + - Set a matrix property. + X axis remap multiplier. - - - - + - Set a matrix property. + Define how the noise values are remapped on the Y axis, when using the ParticleSystem.NoiseModule.separateAxes option. - - - - + - Set a texture property. + Y axis remap multiplier. - - - - + - Set a texture property. + Define how the noise values are remapped on the Z axis, when using the ParticleSystem.NoiseModule.separateAxes option. - - - - + - Set a vector property. + Z axis remap multiplier. - - - - + - Set a vector property. + Scroll the noise map over the particle system. - - - - + - A collection of common math functions. + Scroll speed multiplier. - + - Returns the absolute value of f. + Control the noise separately for each axis. - - + - Returns the absolute value of value. + How strong the overall noise effect is. - - + - Returns the arc-cosine of f - the angle in radians whose cosine is f. + Strength multiplier. - - + - Compares two floating point values if they are similar. + Define the strength of the effect on the X axis, when using the ParticleSystem.NoiseModule.separateAxes option. - - - + - Returns the arc-sine of f - the angle in radians whose sine is f. + X axis strength multiplier. - - + - Returns the arc-tangent of f - the angle in radians whose tangent is f. + Define the strength of the effect on the Y axis, when using the ParticleSystem.NoiseModule.separateAxes option. - - + - Returns the angle in radians whose Tan is y/x. + Y axis strength multiplier. - - - + - Returns the smallest integer greater to or equal to f. + Define the strength of the effect on the Z axis, when using the ParticleSystem.NoiseModule.separateAxes option. - - + - Returns the smallest integer greater to or equal to f. + Z axis strength multiplier. - - + - Clamps a value between a minimum float and maximum float value. + Script interface for a Particle. - - - - + - Clamps value between min and max and returns value. + The angular velocity of the particle. - - - - + - Clamps value between 0 and 1 and returns value. + The 3D angular velocity of the particle. - - + - Returns the closest power of two value. + The lifetime of the particle. - - + - Returns the cosine of angle f in radians. + The position of the particle. - - + - Degrees-to-radians conversion constant (Read Only). + The random seed of the particle. - + - Calculates the shortest difference between two given angles given in degrees. + The random value of the particle. - - - + - A tiny floating point value (Read Only). + The remaining lifetime of the particle. - + - Returns e raised to the specified power. + The rotation of the particle. - - + - Returns the largest integer smaller to or equal to f. + The 3D rotation of the particle. - - + - Returns the largest integer smaller to or equal to f. + The initial color of the particle. The current color of the particle is calculated procedurally based on this value and the active color modules. - - + - Converts the given value from gamma (sRGB) to linear color space. + The starting lifetime of the particle. - - + - A representation of positive infinity (Read Only). + The initial size of the particle. The current size of the particle is calculated procedurally based on this value and the active size modules. - + - Calculates the linear parameter t that produces the interpolant value within the range [a, b]. + 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. - - - - + - Returns true if the value is power of two. + The velocity of the particle. - - + - Linearly interpolates between a and b by t. + 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. + - + - Same as Lerp but makes sure the values interpolate correctly when they wrap around 360 degrees. + 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. + - + - Linearly interpolates between a and b by t. + 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. + - + - Converts the given value from linear to gamma (sRGB) color space. + Pauses the system so no new particles are emitted and the existing particles are not updated. - + Pause all child particle systems as well. - + - Returns the logarithm of a specified number in a specified base. + Starts the particle system. - - + Play all child particle systems as well. - + - Returns the natural (base e) logarithm of a specified number. + Script interface for the Rotation By Speed module. - - + - Returns the base 10 logarithm of a specified number. + Enable/disable the Rotation By Speed module. - - + - Returns largest of two or more values. + Apply the rotation curve between these minimum and maximum speeds. - - - - + - Returns largest of two or more values. + Set the rotation by speed on each axis separately. - - - - + - Returns the largest of two or more values. + Rotation by speed curve for the X axis. - - - - + - Returns the largest of two or more values. + Speed multiplier along the X axis. - - - - + - Returns the smallest of two or more values. + Rotation by speed curve for the Y axis. - - - - + - Returns the smallest of two or more values. + Speed multiplier along the Y axis. - - - - + - Returns the smallest of two or more values. + Rotation by speed curve for the Z axis. - - - - + - Returns the smallest of two or more values. + Speed multiplier along the Z axis. - - - - + - Moves a value current towards target. + Script interface for the Rotation Over Lifetime module. - 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. + Enable/disable the Rotation Over Lifetime module. - - - - + - A representation of negative infinity (Read Only). + Set the rotation over lifetime on each axis separately. - + - Returns the next power of two value. + Rotation over lifetime curve for the X axis. - - + - Generate 2D Perlin noise. + Rotation multiplier around the X axis. - X-coordinate of sample point. - Y-coordinate of sample point. - - Value between 0.0 and 1.0. - - + - The infamous 3.14159265358979... value (Read Only). + Rotation over lifetime curve for the Y axis. - + - PingPongs the value t, so that it is never larger than length and never smaller than 0. + Rotation multiplier around the Y axis. - - - + - Returns f raised to power p. + Rotation over lifetime curve for the Z axis. - - - + - Radians-to-degrees conversion constant (Read Only). + Rotation multiplier around the Z axis. - + - Loops the value t, so that it is never larger than length and never smaller than 0. + Set a stream of custom per-particle data. + + The array of per-particle data. + Which stream to assign the data to. + + + + Set the particles of this particle system. size is the number of particles that is set. + + + + + + + Script interface for the Shape module. - - - + - Returns f rounded to the nearest integer. + Align particles based on their initial direction of travel. - - + - Returns f rounded to the nearest integer. + Angle of the cone. - - + - Returns the sign of f. + Circle arc angle. - - + - Returns the sine of angle f in radians. + The mode used for generating particles around the arc. - - + - Gradually changes a value towards a desired goal over time. + When using one of the animated modes, how quickly to move the emission position around the arc. - 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. + A multiplier of the arc speed of the emission shape. - 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. + Control the gap between emission points around the arc. - 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. + Scale of the box. - 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. + Enable/disable the Shape module. - 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. + Length of the cone. - 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. + Mesh to emit particles from. - - - - + - Returns square root of f. + Emit particles from a single material of a mesh. - - + - Returns the tangent of angle f in radians. + MeshRenderer to emit particles from. - - + - A standard 4x4 transformation matrix. + Apply a scaling factor to the mesh used for generating source positions. - + - The determinant of the matrix. + Where on the mesh to emit particles from. - + - Returns the identity matrix (Read Only). + Move particles away from the surface of the source mesh. - + - The inverse of this matrix (Read Only). + Radius of the shape. - + - Is this the identity matrix? + The mode used for generating particles along the radius. - + - Returns the transpose of this matrix (Read Only). + When using one of the animated modes, how quickly to move the emission position along the radius. - + - Returns a matrix with all elements set to zero (Read Only). + A multiplier of the radius speed of the emission shape. - + - Get a column of the matrix. + Control the gap between emission points along the radius. - - + - Returns a row of the matrix. + Randomizes the starting direction of particles. - - + - Transforms a position by this matrix (generic). + Randomizes the starting direction of particles. - - + - Transforms a position by this matrix (fast). + Type of shape to emit particles from. - - + - Transforms a direction by this matrix. + SkinnedMeshRenderer to emit particles from. - - + - Multiplies two matrices. + Spherizes the starting direction of particles. - - - + - Transforms a Vector4 by a matrix. + Modulate the particle colors with the vertex colors, or the material color if no vertex colors exist. - - - + - Creates an orthogonal projection matrix. + Emit from a single material, or the whole mesh. - - - - - - - + - Creates a perspective projection matrix. + Fastforwards the particle system by simulating particles over 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. + Fastforward 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. - + - Creates a scaling matrix. + Script interface for the Size By Speed module. - - + - Sets a column of the matrix. + Enable/disable the Size By Speed module. - - - + - Sets a row of the matrix. + Apply the size curve between these minimum and maximum speeds. - - - + - Sets this matrix to a translation, rotation and scaling matrix. + Set the size by speed on each axis separately. - - - - + - Access element at [row, column]. + Curve to control particle size based on speed. - + - Access element at sequential index (0..15 inclusive). + Size multiplier. - + - Returns a nicely formatted string for this matrix. + Size by speed curve for the X axis. - - + - Returns a nicely formatted string for this matrix. + X axis size multiplier. - - + - Creates a translation, rotation and scaling matrix. + Size by speed curve for the Y axis. - - - - + - A class that allows creating or modifying meshes from scripts. + Y axis size multiplier. - + - The bind poses. The bind pose at each index refers to the bone with the same index. + Size by speed curve for the Z axis. - + - Returns BlendShape count on this mesh. + Z axis size multiplier. - + - The bone weights of each vertex. + Script interface for the Size Over Lifetime module. - + - The bounding volume of the mesh. + Enable/disable the Size Over Lifetime module. - + - Vertex colors of the mesh. + Set the size over lifetime on each axis separately. - + - Vertex colors of the mesh. + Curve to control particle size based on lifetime. - + - Returns state of the Read/Write Enabled checkbox when model was imported. + Size multiplier. - + - The normals of the mesh. + Size over lifetime curve for the X axis. - + - The number of submeshes. Every material has a separate triangle list. + X axis size multiplier. - + - The tangents of the mesh. + Size over lifetime curve for the Y axis. - + - An array containing all triangles in the mesh. + Y axis size multiplier. - + - The base texture coordinates of the mesh. + Size over lifetime curve for the Z axis. - + - The second texture coordinate set of the mesh, if present. + Z axis size multiplier. - + - The third texture coordinate set of the mesh, if present. + 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. - + - The fourth texture coordinate set of the mesh, if present. + 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. - + - Returns the number of vertices in the mesh (Read Only). + Script interface for the Sub Emitters module. - + - Returns a copy of the vertex positions or assigns a new vertex positions array. + Sub particle system which spawns at the locations of the birth of the particles from the parent system. - + - Adds a new blend shape frame. + Sub particle system which spawns at the locations of the birth of the particles from the parent system. - 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. + Sub particle system which spawns at the locations of the collision of the particles from the parent system. - - + - Clears all blend shapes from Mesh. + Sub particle system which spawns at the locations of the collision of the particles from the parent system. - + - Combines several meshes into this mesh. + Sub particle system which spawns at the locations of the death of the particles from the parent system. - Descriptions of the meshes to combine. - Should all meshes be combined into a single submesh? - Should the transforms supplied in the CombineInstance array be used or ignored? - + - Creates an empty mesh. + Sub particle system to spawn on death of the parent system's particles. - + - Returns the frame count for a blend shape. + Enable/disable the Sub Emitters module. - The shape index to get frame count from. - + - Retreives deltaVertices, deltaNormals and deltaTangents of a blend shape frame. + The total number of sub-emitters. - 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. + Add a new sub-emitter. - The shape index of the frame. - The frame index to get the weight from. + The sub-emitter to be added. + The event that creates new particles. + The properties of the new particles. - + - Returns index of BlendShape by given name. + 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. + - + - Returns name of BlendShape by given index. + Get the sub-emitter Particle System at the given index. - + The index of the desired sub-emitter. + + The sub-emitter being requested. + - + - Returns the index buffer for the submesh. + 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. + - + - Gets the topology of a submesh. + Remove a sub-emitter from the given index in the array. - + The index from which to remove a sub-emitter. - + - Returns the triangle list for the submesh. + 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. - + - Get the UVs for a given chanel. + Set the Particle System to use as the sub-emitter at the given index. - The UV Channel (zero-indexed). - List of UVs to get for the given index. + The index of the sub-emitter being modified. + The Particle System being used as this sub-emitter. - + - Get the UVs for a given chanel. + Set the type of the sub-emitter at the given index. - The UV Channel (zero-indexed). - List of UVs to get for the given index. + The index of the sub-emitter being modified. + The new spawning type to assign to this sub-emitter. - + - Get the UVs for a given chanel. + Script interface for the Texture Sheet Animation module. - The UV Channel (zero-indexed). - List of UVs to get for the given index. - + - Optimize mesh for frequent updates. + Specifies the animation type. - + - Optimizes the mesh for display. + Specifies how many times the animation will loop during the lifetime of the particle. - + - Recalculate the bounding volume of the mesh from the vertices. + Enable/disable the Texture Sheet Animation module. - + - Recalculates the normals of the mesh from the triangles and vertices. + Flip the U coordinate on particles, causing them to appear mirrored horizontally. - + - Vertex colors of the mesh. + Flip the V coordinate on particles, causing them to appear mirrored vertically. - Per-Vertex Colours. - + - Vertex colors of the mesh. + Curve to control which frame of the texture sheet animation to play. - Per-Vertex Colours. - + - Sets the index buffer for the submesh. + Frame over time mutiplier. - - - - + - Set the normals of the mesh. + Defines the tiling of the texture in the X axis. - Per-vertex normals. - + - Set the tangents of the mesh. + Defines the tiling of the texture in the Y axis. - Per-vertex tangents. - + - Sets the triangle list for the submesh. + Explicitly select which row of the texture sheet is used, when ParticleSystem.TextureSheetAnimationModule.useRandomRow is set to false. - - - - + - Sets the triangle list for the submesh. + Define a random starting frame for the texture sheet animation. - - - - + - Set the UVs for a given chanel. + Starting frame multiplier. - The UV Channel (zero-indexed). - List of UVs to set for the given index. - + - Set the UVs for a given chanel. + Use a random row of the texture sheet for each particle emitted. - The UV Channel (zero-indexed). - List of UVs to set for the given index. - + - Set the UVs for a given chanel. + Choose which UV channels will receive texture animation. - The UV Channel (zero-indexed). - List of UVs to set for the given index. - + - Assigns a new vertex positions array. + Access the particle system trails module. - Per-vertex position. - + - Upload previously done mesh modifications to the graphics API. + The gradient controlling the trail colors during the lifetime of the attached particle. - Frees up system memory copy of mesh data when set to true. - + - A mesh collider allows you to do between meshes and primitives. + The gradient controlling the trail colors over the length of the trail. - + - Use a convex collider from the mesh. + 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. - + - The mesh object used for collision detection. + Enable/disable the Trail module. - + - Uses interpolated normals for sphere collisions instead of flat polygonal normals. + Toggle whether the trail will inherit the particle color as its starting color. - + - A class to access the Mesh of the. + The curve describing the trail lifetime, throughout the lifetime of the particle. - + - Returns the instantiated Mesh assigned to the mesh filter. + Change the lifetime multiplier. - + - Returns the shared mesh of the mesh filter. + Set the minimum distance each trail can travel before a new vertex is added to it. - + - Class used to allow GameObject.AddComponent / GameObject.GetComponent to be used. + Choose what proportion of particles will receive a trail. - + - Renders meshes inserted by the MeshFilter or TextMesh. + Set whether the particle size will act as a multiplier on top of the trail lifetime. - + - Vertex attributes in this mesh will override or add attributes of the primary mesh in the MeshRenderer. + Set whether the particle size will act as a multiplier on top of the trail width. - + - Topology of Mesh faces. + Choose whether the U coordinate of the trail texture is tiled or stretched. - + - Mesh is made from lines. + The curve describing the width, of each trail point. - + - Mesh is a line strip. + Change the width multiplier. - + - Mesh is made from points. + Drop new trail points in world space, regardless of Particle System Simulation Space. - + - Mesh is made from quads. + Script interface for the Trigger module. - + - Mesh is made from triangles. + Enable/disable the Trigger module. - + - Use this class to record to an AudioClip using a connected microphone. + Choose what action to perform when particles enter the trigger volume. - + - A list of available microphone devices, identified by name. + Choose what action to perform when particles leave the trigger volume. - + - Stops recording. + Choose what action to perform when particles are inside the trigger volume. - The name of the device. - + - Get the frequency capabilities of a device. + The maximum number of collision shapes that can be attached to this particle system trigger. - 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. + Choose what action to perform when particles are outside the trigger volume. - The name of the device. - + - Query if a device is currently recording. + A multiplier applied to the size of each particle before overlaps are processed. - The name of the device. - + - Start Recording with device. + Get a collision shape associated with this particle system trigger. - 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. + Which collider to return. - The function returns null if the recording fails to start. + The collider at the given index. - - - MonoBehaviour is the base class every script derives from. - - - + - Logs message to the Unity Console (identical to Debug.Log). + Set a collision shape associated with this particle system trigger. - + Which collider to set. + The collider to associate with this trigger. - + - Disabling this lets you skip the GUI layout phase. + Script interface for the Velocity Over Lifetime module. - + - Cancels all Invoke calls on this MonoBehaviour. + Enable/disable the Velocity Over Lifetime module. - + - Cancels all Invoke calls with name methodName on this behaviour. + Specifies if the velocities are in local space (rotated with the transform) or world space. - - + - Invokes the method methodName in time seconds. + Curve to control particle speed based on lifetime, on the X axis. - - - + - Invokes the method methodName in time seconds, then repeatedly every repeatRate seconds. + X axis speed multiplier. - - - - + - Is any invoke on methodName pending? + Curve to control particle speed based on lifetime, on the Y axis. - - + - Is any invoke pending on this MonoBehaviour? + Y axis speed multiplier. - + - Starts a coroutine. + Curve to control particle speed based on lifetime, on the Z axis. - - + - Starts a coroutine named methodName. + Z axis speed multiplier. - - - + - Starts a coroutine named methodName. + The animation type. - - - + - Stops all coroutines running on this behaviour. + Animate a single row in the sheet from left to right. - + - Stops the first coroutine named methodName, or the coroutine stored in routine running on this behaviour. + Animate over the whole texture sheet from left to right, top to bottom. - Name of coroutine. - Name of the function in code. - + - Stops the first coroutine named methodName, or the coroutine stored in routine running on this behaviour. + Whether to use 2D or 3D colliders for particle collisions. - Name of coroutine. - Name of the function in code. - + - Base class for AnimationClips and BlendTrees. + Use 2D colliders to collide particles against. - + - Movie Textures are textures onto which movies are played back. + Use 3D colliders to collide particles against. - + - Returns the AudioClip belonging to the MovieTexture. + Quality of world collisions. Medium and low quality are approximate and may leak particles. - + - The time, in seconds, that the movie takes to play back completely. + The most accurate world collisions. - + - Returns whether the movie is playing or not. + Fastest and most approximate world collisions. - + - If the movie is downloading from a web site, this returns if enough data has been downloaded so playback should be able to start without interruptions. + Approximate world collisions. - + - Set this to true to make the movie loop. + The type of collisions to use for a given particle system. - + - Pauses playing the movie. + Collide with a list of planes. - + - Starts playing the movie. + Collide with the world geometry. - + - Stops playing the movie, and rewinds it to the beginning. + The particle curve mode (Shuriken). - + - Attribute to make a string be edited with a multi-line textfield. + Use a single constant for the ParticleSystem.MinMaxCurve. - + - Attribute used to make a string value be shown in a multiline textarea. + Use a single curve for the ParticleSystem.MinMaxCurve. - 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. + Use a random value between 2 constants for the ParticleSystem.MinMaxCurve. - How many lines of text to make room for. Default is 3. - + - Singleton class to access the baked NavMesh. + Use a random value between 2 curves for the ParticleSystem.MinMaxCurve. - + - Describes how far in the future the agents predict collisions for avoidance. + Which stream of custom particle data to set. - + - The maximum amount of nodes processed each frame in the asynchronous pathfinding process. + The first stream of custom per-particle data. - + - Area mask constant that includes all NavMesh areas. + The second stream of custom per-particle data. - + - Calculate a path between two points and store the resulting path. + Which mode the Custom Data module uses to generate its data. - 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 triangulation of the current navmesh. + Generate data using ParticleSystem.MinMaxGradient. - + - Locate the closest NavMesh edge from a point on the NavMesh. + Don't generate any data. - 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. - - + - Gets the cost for path finding over geometry of the area type. + Generate data using ParticleSystem.MinMaxCurve. - Index of the area to get. - + - Returns the area index for a named NavMesh area type. + The mode in which particles are emitted. - 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. + Emit when emitter moves. - - + - Returns the layer index for a named layer. + Emit over time. - - + - Trace a line between two points on the NavMesh. + The particle gradient mode (Shuriken). - 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. - - + - Finds the closest point on NavMesh within specified range. + Use a single color for the ParticleSystem.MinMaxGradient. - 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. - - + - Sets the cost for finding path over geometry of the area type on all agents. + Use a single color gradient for the ParticleSystem.MinMaxGradient. - Index of the area to set. - New cost. - + - Sets the cost for traversing over geometry of the layer type on all agents. + Define a list of colors in the ParticleSystem.MinMaxGradient, to be chosen from at random. - - - + - Navigation mesh agent. + Use a random value between 2 colors for the ParticleSystem.MinMaxGradient. - + - The maximum acceleration of an agent as it follows a path, given in units / sec^2. + Use a random value between 2 color gradients for the ParticleSystem.MinMaxGradient. - + - Maximum turning speed in (deg/s) while following a path. + How to apply emitter velocity to particles. - + - Specifies which NavMesh areas are passable. Changing areaMask will make the path stale (see isPathStale). + Each particle's velocity is set to the emitter's current velocity value, every frame. - + - Should the agent brake automatically to avoid overshooting the destination point? + Each particle inherits the emitter's velocity on the frame when it was initially emitted. - + - Should the agent attempt to acquire a new path if the existing path becomes invalid? + The mesh emission type. - + - Should the agent move across OffMeshLinks automatically? + Emit from the edges of the mesh. - + - The avoidance priority level. + Emit from the surface of the mesh. - + - The relative vertical displacement of the owning GameObject. + Emit from the vertices of the mesh. - + - The current OffMeshLinkData. + The quality of the generated noise. - + - The desired velocity of the agent including any potential contribution from avoidance. (Read Only) + High quality 3D noise. - + - Gets or attempts to set the destination of the agent in world-space units. + Low quality 1D noise. - + - Does the agent currently have a path? (Read Only) + Medium quality 2D noise. - + - The height of the agent for purposes of passing under obstacles, etc. + What action to perform when the particle trigger module passes a test. - + - Is the agent currently bound to the navmesh? (Read Only) + Send the OnParticleTrigger command to the particle system's script. - + - Is the agent currently positioned on an OffMeshLink? (Read Only) + Do nothing. - + - Is the current path stale. (Read Only) + Kill all particles that pass this test. - + - The next OffMeshLinkData on the current path. + Renders particles on to the screen (Shuriken). - + - Gets or sets the simulation position of the navmesh agent. + The number of currently active custom vertex streams. - + - The level of quality of avoidance. + Control the direction that particles face. - + - Property to get and set the current path. + How much are the particles stretched depending on the Camera's speed. - + - Is a path in the process of being computed but not yet ready? (Read Only) + How much are the particles stretched in their direction of motion. - + - The status of the current path (complete, partial or invalid). + Clamp the maximum particle size. - + - The avoidance radius for the agent. + Mesh used as particle instead of billboarded texture. - + - The distance between the agent's position and the destination on the current path. (Read Only) + The number of meshes being used for particle rendering. - + - Maximum movement speed when following a path. + Clamp the minimum particle size. - + - Get the current steering target along the path. (Read Only) + How much are billboard particle normals oriented towards the camera. - + - Stop within this distance from the target position. + Modify the pivot point used for rotating particles. - + - Gets or sets whether the transform position is synchronized with the simulated agent position. The default value is true. + How particles are drawn. - + - Should the agent update the transform orientation? + Biases particle system sorting amongst other transparencies. - + - Access the current velocity of the NavMeshAgent component, or set a velocity to control the agent manually. + Sort particles within a system. - + - Specifies which NavMesh layers are passable (bitfield). Changing walkableMask will make the path stale (see isPathStale). + Set the material used by the Trail module for attaching trails to particles. - + - Enables or disables the current off-mesh link. + How much are the particles stretched depending on "how fast they move". - Is the link activated? - + - Calculate a path to a specified point and store the resulting path. + Query whether the particle system renderer uses a particular set of vertex streams. - The final position of the path requested. - The resulting path. + Streams to query. - True if a path is found. + Whether all the queried streams are enabled or not. - + - Completes the movement on the current OffMeshLink. + 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. - + - Locate the closest NavMesh edge. + Enable a set of vertex shader streams on the particle system renderer. - Holds the properties of the resulting location. - - True if a nearest edge is found. - + Streams to enable. - + - Gets the cost for path calculation when crossing area of a particular type. + Query which vertex shader streams are enabled on the ParticleSystemRenderer. - Area Index. - - Current cost for specified area index. - + The array of streams to be populated. - + - Gets the cost for crossing ground of a particular type. + Query whether the particle system renderer uses a particular set of vertex streams. - Layer index. + Streams to query. - Current cost of specified layer. + Returns the subset of the queried streams that are actually enabled. - + - 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. + Set the array of meshes used as particles. - The desired end position of movement. - Properties of the obstacle detected by the ray (if any). + This array will be populated with the list of meshes being used for particle rendering. - True if there is an obstacle between the agent and the target position, otherwise false. + The number of meshes actually written to the destination array. - + - Clears the current path. + Enable a set of vertex shader streams on the ParticleSystemRenderer. + The new array of enabled vertex streams. - + - Resumes the movement along the current path after a pause. + Set an array of meshes used as particles instead of a billboarded texture. + Array of meshes to be used. + Number of elements from the mesh array to be applied. - + - Sample a position along the current path. + Set an array of meshes used as particles instead of a billboarded texture. - 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. - + Array of meshes to be used. + Number of elements from the mesh array to be applied. - + - Sets the cost for traversing over areas of the area type. + The rendering mode for particle systems (Shuriken). - Area cost. - New cost for the specified area index. - + - Sets or updates the destination thus triggering the calculation for a new path. + Render particles as billboards facing the active camera. (Default) - 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. + Render particles as billboards always facing up along the y-Axis. - Layer index. - New cost for the specified layer. - + - Assign a new path to this agent. + Render particles as meshes. - New path to follow. - - True if the path is succesfully assigned. - - + - Stop movement of this agent along its current path. + Do not render particles. - + - Warps agent to the provided position. + Stretch particles in the direction of motion. - New position to warp the agent to. - - True if agent is successfully warped, otherwise false. - - + - Result information for NavMesh queries. + Render particles as billboards always facing the player, but not pitching along the x-Axis. - + - Distance to the point of hit. + How particles are aligned when rendered. - + - Flag set when hit. + Particles face the eye position. - + - Mask specifying NavMesh area at point of hit. + Particles align with their local transform. - + - Normal at the point of hit. + Particles face the camera plane. - + - Position of hit. + Particles align with the world. - + - An obstacle for NavMeshAgents to avoid. + Control how particle systems apply transform scale. - + - Should this obstacle be carved when it is constantly moving? + Scale the particle system using the entire transform hierarchy. - + - Should this obstacle make a cut-out in the navmesh. + Scale the particle system using only its own transform scale. (Ignores parent scale). - + - Threshold distance for updating a moving carved hole (when carving is enabled). + Only apply transform scale to the shape component, which controls where + particles are spawned, but does not affect their size or movement. + - + - Time to wait until obstacle is treated as stationary (when carving and carveOnlyStationary are enabled). + The mode used to generate new points in a shape (Shuriken). - + - The center of the obstacle, measured in the object's local space. + Distribute new particles around the shape evenly. - + - Height of the obstacle's cylinder shape. + Animate the emission point around the shape. - + - Radius of the obstacle's capsule shape. + Animate the emission point around the shape, alternating between clockwise and counter-clockwise directions. - + - Shape of the obstacle. + Generate points randomly. (Default) - + - The size of the obstacle, measured in the object's local space. + The emission shape (Shuriken). - + - Velocity at which the obstacle moves around the NavMesh. + Emit from the volume of a box. - + - Shape of the obstacle. + Emit from the surface of a box. - + - Box shaped obstacle. + Emit from the edges of a box. - + - Capsule shaped obstacle. + Emit from a circle. - + - A path as calculated by the navigation system. + Emit from the edge of a circle. - + - Corner points of the path. (Read Only) + Emit from the base surface of a cone. - + - Status of the path. (Read Only) + Emit from the base surface of a cone. - + - Erase all corner points from path. + Emit from the volume of a cone. - + - NavMeshPath constructor. + Emit from the surface of a cone. - + - Calculate the corners for the path. + Emit from the volume of a half-sphere. - Array to store path corners. - - The number of corners along the path - including start and end points. - - + - Status of path. + Emit from the surface of a half-sphere. - + - The path terminates at the destination. + Emit from a mesh. - + - The path is invalid. + Emit from a mesh renderer. - + - The path cannot reach the destination. + Emit from an edge. - + - Contains data describing a triangulation of a navmesh. + Emit from a skinned mesh renderer. - + - NavMesh area indices for the navmesh triangulation. + Emit from the volume of a sphere. - + - Triangle indices for the navmesh triangulation. + Emit from the surface of a sphere. - + - NavMeshLayer values for the navmesh triangulation. + The space to simulate particles in. - + - Vertices for the navmesh triangulation. + Simulate particles relative to a custom transform component, defined by ParticleSystem.MainModule.customSimulationSpace. - + - The network class is at the heart of the network implementation and provides the core functions. + Simulate particles in local space. - + - All connected players. + Simulate particles in world space. - + - The IP address of the connection tester used in Network.TestConnection. + The sorting mode for particle systems. - + - The port of the connection tester used in Network.TestConnection. + Sort based on distance. - + - Set the password for the server (for incoming connections). + No sorting. - + - Returns true if your peer type is client. + Sort the oldest particles to the front. - + - Enable or disable the processing of network messages. + Sort the youngest particles to the front. - + - Returns true if your peer type is server. + The behavior to apply when calling ParticleSystem.Stop|Stop. - + - Set the log level for network messages (default is Off). + Stops particle system emitting any further particles. All existing particles will remain until they expire. - + - Set the maximum amount of connections/players allowed. + Stops particle system emitting and removes all existing emitted particles. - + - Get or set the minimum number of ViewID numbers in the ViewID pool given to clients by the server. + The properties of sub-emitter particles. - + - The IP address of the NAT punchthrough facilitator. + When spawning new particles, multiply the start color by the color of the parent particles. - + - The port of the NAT punchthrough facilitator. + When spawning new particles, inherit all available properties from the parent particles. - + - The status of the peer type, i.e. if it is disconnected, connecting, server or client. + When spawning new particles, do not inherit any properties from the parent particles. - + - Get the local NetworkPlayer instance. + When spawning new particles, add the start rotation to the rotation of the parent particles. - + - The IP address of the proxy server. + When spawning new particles, multiply the start size by the size of the parent particles. - + - Set the proxy server password. + The events that cause new particles to be spawned. - + - The port of the proxy server. + Spawn new particles when particles from the parent system are born. - + - The default send rate of network updates for all Network Views. + Spawn new particles when particles from the parent system collide with something. - + - Get the current network time (seconds). + Spawn new particles when particles from the parent system die. - + - Indicate if proxy support is needed, in which case traffic is relayed through the proxy server. + Choose how textures are applied to Particle Trails. - + - Query for the next available network view ID number and allocate it (reserve). + Map the texture once along the entire length of the trail, assuming all vertices are evenly spaced. - + - Close the connection to another system. + Repeat the texture along the trail, repeating at a rate of once per trail segment. To adjust the tiling rate, use Material.SetTextureScale. - - - + - Connect to the specified host (ip or domain name) and server port. + Map the texture once along the entire length of the trail. - - - - + - Connect to the specified host (ip or domain name) and server port. + Repeat the texture along the trail. To set the tiling rate, use Material.SetTextureScale. - - - - + - This function is exactly like Network.Connect but can accept an array of IP addresses. + The different types of particle triggers. - - - - + - This function is exactly like Network.Connect but can accept an array of IP addresses. + Trigger when particles enter the collision volume. - - - - + - Connect to a server GUID. NAT punchthrough can only be performed this way. + Trigger when particles leave the collision volume. - - - + - Connect to a server GUID. NAT punchthrough can only be performed this way. + Trigger when particles are inside the collision volume. - - - + - Connect to the host represented by a HostData structure returned by the Master Server. + Trigger when particles are outside the collision volume. - - - + - Connect to the host represented by a HostData structure returned by the Master Server. + All possible particle system vertex shader inputs. - - - + - Destroy the object associated with this view ID across the network. + The normalized age of each particle, from 0 to 1. - - + - Destroy the object across the network. + The amount to blend between animated texture frames, from 0 to 1. - - + - Destroy all the objects based on view IDs belonging to this player. + The current animation frame index of each particle. - - + - Close all open connections and shuts down the network interface. + The center position of the entire particle, in world space. - - + - Close all open connections and shuts down the network interface. + The color of each particle. - - + - The last average ping time to the given player in milliseconds. + One custom value for each particle, defined by the Custom Data Module, or ParticleSystem.SetCustomParticleData. - - + - The last ping time to the given player in milliseconds. + Two custom values for each particle, defined by the Custom Data Module, or ParticleSystem.SetCustomParticleData. - - + - Check if this machine has a public IP address. + Three custom values for each particle, defined by the Custom Data Module, or ParticleSystem.SetCustomParticleData. - + - Initializes security layer. + Four custom values for each particle, defined by the Custom Data Module, or ParticleSystem.SetCustomParticleData. - + - Initialize the server. + One custom value for each particle, defined by the Custom Data Module, or ParticleSystem.SetCustomParticleData. - - - - + - Initialize the server. + Two custom values for each particle, defined by the Custom Data Module, or ParticleSystem.SetCustomParticleData. - - - - + - Network instantiate a prefab. + Three custom values for each particle, defined by the Custom Data Module, or ParticleSystem.SetCustomParticleData. - - - - - + - Remove all RPC functions which belong to this player ID. + Four custom values for each particle, defined by the Custom Data Module, or ParticleSystem.SetCustomParticleData. - - + - Remove all RPC functions which belong to this player ID and were sent based on the given group. + The reciprocal of the starting lifetime, in seconds (1.0f / startLifetime). - - - + - Remove the RPC function calls accociated with this view ID number. + The vertex normal of each particle. - - + - Remove all RPC functions which belong to given group number. + The position of each particle vertex, in world space. - - + - Set the level prefix which will then be prefixed to all network ViewID numbers. + The Z axis rotation of each particle. - - + - Enable or disables the reception of messages in a specific group number from a specific player. + The 3D rotation of each particle. - - - - + - Enables or disables transmission of messages and RPC calls on a specific network group number. + The Z axis rotational speed of each particle. - - - + - Enable or disable transmission of messages and RPC calls based on target network player as well as the network group. + The 3D rotational speed of each particle. - - - - + - Test this machines network connection. + The X axis size of each particle. - - + - Test this machines network connection. + The X and Y axis sizes of each particle. - - + - Test the connection specifically for NAT punch-through connectivity. + The 3D size of each particle. - - + - Test the connection specifically for NAT punch-through connectivity. + The speed of each particle, calculated by taking the magnitude of the velocity. - - + - Possible status messages returned by Network.Connect and in MonoBehaviour.OnFailedToConnect|OnFailedToConnect in case the error was not immediate. + A random number for each particle, which remains constant during their lifetime. - + - Cannot connect to two servers at once. Close the connection before connecting again. + Two random numbers for each particle, which remain constant during their lifetime. - + - We are already connected to this particular server (can happen after fast disconnect/reconnect). + Three random numbers for each particle, which remain constant during their lifetime. - + - We are banned from the system we attempted to connect to (likely temporarily). + Four random numbers for each particle, which remain constant during their lifetime. - + - Connection attempt failed, possibly because of internal connectivity problems. + The tangent vector for each particle (for normal mapping). - + - Internal error while attempting to initialize network interface. Socket possibly already in use. + The first UV stream of each particle. - + - No host target given in Connect. + The second UV stream of each particle. - + - Incorrect parameters given to Connect function. + The third UV stream of each particle (only for meshes). - + - Client could not connect internally to same network NAT enabled server. + The fourth UV stream of each particle (only for meshes). - + - The server is using a password and has refused our connection because we did not set the correct password. + A random number for each particle, which changes during their lifetime. - + - NAT punchthrough attempt has failed. The cause could be a too restrictive NAT implementation on either endpoints. + Two random numbers for each particle, which change during their lifetime. - + - Connection lost while attempting to connect to NAT target. + Three random numbers for each particle, which change during their lifetime. - + - The NAT target we are trying to connect to is not connected to the facilitator server. + Four random numbers for each particle, which change during their lifetime. - + - No error occurred. + The velocity of each particle, in world space. - + - We presented an RSA public key which does not match what the system we connected to is using. + The vertex ID of each particle. - + - The server is at full capacity, failed to connect. + All possible particle system vertex shader inputs. - + - The reason a disconnect event occured, like in MonoBehaviour.OnDisconnectedFromServer|OnDisconnectedFromServer. + A mask with all vertex streams enabled. - + - The connection to the system has been closed. + The center position of each particle, with the vertex ID of each particle, from 0-3, stored in the w component. - + - The connection to the system has been lost, no reliable packets could be delivered. + The color of each particle. - + - Defines parameters of channels. + The first stream of custom data, supplied from script. - + - UnderlyingModel.MemDoc.MemDocModel. + The second stream of custom data, supplied from script. - Requested type of quality of service (default Unreliable). - Copy constructor. - + - UnderlyingModel.MemDoc.MemDocModel. + 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. - Requested type of quality of service (default Unreliable). - Copy constructor. - + - UnderlyingModel.MemDoc.MemDocModel. + A mask with no vertex streams enabled. - Requested type of quality of service (default Unreliable). - Copy constructor. - + - Channel quality of service. + The normal of each particle. - + - This class defines parameters of connection between two peers, this definition includes various timeouts and sizes as well as channel configuration. + The world space position of each particle. - + - How long in ms receiver will wait before it will force send acknowledgements back without waiting any payload. + 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. - Add new channel to configuration. - - Channel id, user can use this id to send message via this channel. - - + - Defines timeout in ms after that message with AllCost deliver qos will force resend without acknowledgement waiting. + The size of each particle. - + - Return amount of channels for current configuration. + Tangent vectors for normal mapping. - + - Allow access to channels list. + The texture coordinates of each particle. - + - Timeout in ms which library will wait before it will send another connection request. + 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. - + - Will create default connection config or will copy them from another. + The 3D velocity of each particle. - Connection config. - + - Will create default connection config or will copy them from another. + Physics material describes how to handle colliding objects (friction, bounciness). - Connection config. - + - How long (in ms) library will wait before it will consider connection as disconnected. + Determines how the bounciness is combined. - + - What should be maximum fragment size (in Bytes) for fragmented messages. + How bouncy is the surface? A value of 0 will not bounce. A value of 1 will bounce without any loss of energy. - + - Return the QoS set for the given channel or throw an out of range exception. + The friction used when already moving. This value has to be between 0 and 1. - Index in array. - - Channel QoS. - - + - If it is true, connection will use 64 bit mask to acknowledge received reliable messages. + If anisotropic friction is enabled, dynamicFriction2 will be applied along frictionDirection2. - + - Maximum amount of small reliable messages which will combine in one "array of messages". Useful if you are going to send a lot of small reliable messages. + Determines how the friction is combined. - + - Maximum size of reliable message which library will consider as small and will try to combine in one "array of messages" message. + The direction of anisotropy. Anisotropic friction is enabled if the vector is not zero. - + - How many attempt library will get before it will consider the connection as disconnected. + The friction coefficient used when an object is lying on a surface. - + - Defines maximum messages which will wait for sending before user will receive error on Send() call. + If anisotropic friction is enabled, staticFriction2 will be applied along frictionDirection2. - + - Minimal send update timeout (in ms) for connection. this timeout could be increased by library if flow control will required. + Creates a new material. - + - How many (in %) packet need to be dropped due network condition before library will throttle send rate. + Creates a new material named name. + - + - How many (in %) packet need to be dropped due lack of internal bufferes before library will throttle send rate. + Describes how physic materials of colliding objects are combined. - + - What is a maximum packet size (in Bytes) (including payload and all header). Packet can contain multiple messages inside. + Averages the friction/bounce of the two colliding materials. - + - Timeout in ms between control protocol messages. + Uses the larger friction/bounce of the two colliding materials. - + - Timeout in ms for control messages which library will use before it will accumulate statistics. + Uses the smaller friction/bounce of the two colliding materials. - + - Minimum timeout (in ms) which library will wait before it will resend reliable message. + Multiplies the friction/bounce of the two colliding materials. - + - When starting a server use protocols that make use of platform specific optimisations where appropriate rather than cross-platform protocols. (Sony consoles only). + Global physics properties and helper methods. - + - Validate parameters of connection config. Will throw exceptions if parameters are incorrect. + Two colliding objects with a relative velocity below this will not bounce (default 2). Must be positive. - - + - Create configuration for network simulator; You can use this class in editor and developer build only. + The default contact offset of the newly created colliders. - + - Will create object describing network simulation parameters. + The defaultSolverIterations determines how accurately Rigidbody joints and collision contacts are resolved. (default 6). Must be positive. - 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. + The defaultSolverVelocityIterations affects how accurately the Rigidbody joints and collision contacts are resolved. (default 1). Must be positive. - + - Defines global paramters for network library. + The gravity applied to all rigid bodies in the scene. - + - Create new global config object. + The default maximum angular velocity permitted for any rigid bodies (default 7). Must be positive. - + - Defines maximum possible packet size in bytes for all network connections. + The minimum contact penetration value in order to apply a penalty force (default 0.05). Must be positive. - + - Defines maximum amount of messages in the receive queue. + Whether physics queries should hit back-face triangles. - + - Defines maximum message count in sent queue. + Specifies whether queries (raycasts, spherecasts, overlap tests, etc.) hit Triggers by default. - + - Defines reactor model for the network library. + The default angular velocity, below which objects start sleeping (default 0.14). Must be positive. - + - 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. + The mass-normalized energy threshold, below which objects start going to sleep. - + - 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). + The default linear velocity, below which objects start going to sleep (default 0.15). Must be positive. - + - 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. + Layer mask constant to select all layers. - Connection config for special connection. - - Id of this connection, user should use this id when he calls Networking.NetworkTransport.Connect. - - + - Create topology. + Casts the box along a ray and returns detailed information on what was hit. - Default config. - Maximum default connections. + 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. + - + - Defines config for default connections in the topology. + 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. + - + - Return reference to special connection config. Parameters of this config can be changed. + Like Physics.BoxCast, but returns all hits. - Config id. + 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. - Connection config. + All colliders that were hit. - + - Defines how many connection with default config be permitted. + 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. + - + - Library keep and reuse internal pools of messages. By default they have size 128. If this value is not enough pools will be automatically increased. This value defines how they will increase. Default value is 0.75, so if original pool size was 128, the new pool size will be 128 * 1.75 = 224. + 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. + - + - What is the size of received messages pool (default 128 bytes). + + 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. - + - Defines size of sent message pool (default value 128). + 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. + - + - List of special connection configs. + 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. + - + - Returns count of special connection added to topology. + 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. + - + - JSON response for types that only require a basic indication of success. + 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. - + - Constructor for response class. + 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. - + - JSON object to request a UNET match creation. + 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. + - + - Bool to describe if the created match should be advertised. + 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. + - + - The optional game defined Elo score for the client making the request. The Elo score is averaged against all clients in a match and that value is used to produce better search results when listing available matches. -If the Elo is provided the result set will be ordered according to the magnitude of the absoloute value of the difference of the a client searching for a match and the network average for all clients in each match. If the Elo score is not provided (and therefore 0 for all matches) the Elo score will not affect the search results. -Each game can calculate this value as they wish according to whatever scale is best for that game. + Layer mask constant to select default raycast layers. - + - Match attributes describing game specific features for this match. Each attribute is a key/value pair of a string key with a long value. Each match may have up to 10 of these values. -The game is free to use this as desired to assist in finding better match results when clients search for matches to join. + Are collisions between layer1 and layer2 being ignored? + + - + - Name of the match to create. + Makes the collision detection system ignore all collisions between collider1 and collider2. + + + - + - Password for the match to create. Leave blank for no password. Cannot be null. + 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. + + + - + - The (optional) private network address for the client making the request. This is the local network available private address another client on the same network could use to connect directly to the client making the request and may be used to better connect multiple clients. If it is not supplied the networking layer will still be completely functional. + Layer mask constant to select ignore raycast layer. - + - The (optional) public network address for the client making the request. This is the internet available public address another client on the internet (but not the local network) could use to connect directly to the client making the request and may be used to better connect multiple clients. If it is not supplied the networking layer will still be completely functional. + 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. - + - Max number of clients that may join the match to create, including the host. + 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). - + - Class constructor. + 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. + - + - Accessor to verify if the contained data is a valid request with respect to initialized variables and accepted parameters. + 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. + - + - Provides string description of current class data. + 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. + - + - JSON response for a CreateMatchRequest. It contains all information necessdary to continue joining a match. + 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. + - + - JSON encoding for the binary access token this client uses to authenticate its session for future commands. + 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. - + - Network address to connect to in order to join the match. + 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. + - + - The network id for the match created. + 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. + - + - NodeId for the requesting client in the created match. + 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. + - + - Network port to connect to in order to join the match. + 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. + - + - If the match is hosted by a relay server. + 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. + - + - Constructor for response class. + 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. - + - Provides string description of current class data. + 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. - + - JSON object to join an ongoing match or to create a new one if it doesn't exist. + 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. + - + - Constructor for CreateOrJoinMatchRequest class. + 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. + - + - JSON object to request a UNET match destruction. + 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. + - + - NetworkID of the match to destroy. + 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. + - + - Class constructor. + + 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. - + - Accessor to verify if the contained data is a valid request with respect to initialized variables and accepted parameters. + 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. + - + - Provides string description of current class data. + 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. - + - JSON object to request a UNET match drop a client. + 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. + - + - NetworkID of the match the client to drop is in. + 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. + - + - NodeID of the connection to drop. + Global settings and helpers for 2D physics. - + - Class constructor. + Should the collider gizmos always be shown even when they are not selected? - + - Accessor to verify if the contained data is a valid request with respect to initialized variables and accepted parameters. + A rigid-body cannot sleep if its angular velocity is above this tolerance. - + - Provides string description of current class data. + The scale factor that controls how fast overlaps are resolved. - + - Response Interface class to define necessary interfaces on a server Response. + The scale factor that controls how fast TOI overlaps are resolved. - + - JSON object to request joining an existing UNET match. + Use this to control whether or not the appropriate OnCollisionExit2D or OnTriggerExit2D callbacks should be called when a Collider2D is disabled. - + - The optional game defined Elo score for the client making the request. The Elo score is averaged against all clients in a match and that value is used to produce better search results when listing available matches. -If the Elo is provided the result set will be ordered according to the magnitude of the absoloute value of the difference of the a client searching for a match and the network average for all clients in each match. If the Elo score is not provided (and therefore 0 for all matches) the Elo score will not affect the search results. -Each game can calculate this value as they wish according to whatever scale is best for that game. + Whether or not to stop reporting collision callbacks immediately if any of the objects involved in the collision are deleted/moved. - + - NetworkID of the match to join. + Sets the color used by the gizmos to show all Collider axis-aligned bounding boxes (AABBs). - + - Password for the match to join. Leave blank for no password. Cannot be null. + The color used by the gizmos to show all asleep colliders (collider is asleep when the body is asleep). - + - The (optional) private network address for the client making the request. This is the local network available private address another client on the same network could use to connect directly to the client making the request and may be used to better connect multiple clients. If it is not supplied the networking layer will still be completely functional. + The color used by the gizmos to show all awake colliders (collider is awake when the body is awake). - + - The (optional) public network address for the client making the request. This is the internet available public address another client on the internet (but not the local network) could use to connect directly to the client making the request and may be used to better connect multiple clients. If it is not supplied the networking layer will still be completely functional. + The color used by the gizmos to show all collider contacts. - + - Class constructor. + The scale of the contact arrow used by the collider gizmos. - + - Accessor to verify if the contained data is a valid request with respect to initialized variables and accepted parameters. + The default contact offset of the newly created colliders. - + - Provides string description of current class data. + Ets the collision callbacks to stop or continue processing if any of the objects involved in the collision are deleted. - + - JSON response for a JoinMatchRequest. It contains all information necessdary to continue joining a match. + Acceleration due to gravity. - + - JSON encoding for the binary access token this client uses to authenticate its session for future commands. + A rigid-body cannot sleep if its linear velocity is above this tolerance. - + - Network address to connect to in order to join the match. + The maximum angular position correction used when solving constraints. This helps to prevent overshoot. - + - NetworkID of the match. + The maximum linear position correction used when solving constraints. This helps to prevent overshoot. - + - NodeID for the requesting client in the mach that it is joining. + The maximum angular speed of a rigid-body per physics update. Increasing this can cause numerical problems. - + - Network port to connect to in order to join the match. + The maximum linear speed of a rigid-body per physics update. Increasing this can cause numerical problems. - + - If the match is hosted by a relay server. + This property is obsolete. You should use defaultContactOffset instead. - + - Constructor for response class. + The number of iterations of the physics solver when considering objects' positions. - + - Provides string description of current class data. + Do raycasts detect Colliders configured as triggers? - + - JSON object to request a list of UNET matches. This list is page based with a 1 index. + Sets the raycasts or linecasts that start inside Colliders to detect or not detect those Colliders. - + - The optional game defined Elo score for the client making the request. The Elo score is averaged against all clients in a match and that value is used to produce better search results when listing available matches. -If the Elo is provided the result set will be ordered according to the magnitude of the absoloute value of the difference of the a client searching for a match and the network average for all clients in each match. If the Elo score is not provided (and therefore 0 for all matches) the Elo score will not affect the search results. -Each game can calculate this value as they wish according to whatever scale is best for that game. + Sets the raycasts to either detect or not detect Triggers. - + - Only return matches that have a password if this is true, only return matches without a password if this is false. + Do ray/line casts that start inside a collider(s) detect those collider(s)? - + - List of match attributes to filter against. This will filter down to matches that both have a name that contains the entire text string provided and the value specified in the filter is equal to the attribute value for the matching name. -No additional wildcards are allowed in the name. A maximum of 10 filters can be specified between all 3 filter lists. + Should the collider gizmos show the AABBs for each collider? - + - List of match attributes to filter against. This will filter down to matches that both have a name that contains the entire text string provided and the value specified in the filter is greater than the attribute value for the matching name. -No additional wildcards are allowed in the name. A maximum of 10 filters can be specified between all 3 filter lists. + Should the collider gizmos show current contacts for each collider? - + - List of match attributes to filter against. This will filter down to matches that both have a name that contains the entire text string provided and the value specified in the filter is less than the attribute value for the matching name. -No additional wildcards are allowed in the name. A maximum of 10 filters can be specified between all 3 filter lists. + Should the collider gizmos show the sleep-state for each collider? - + - Name filter to apply to the match list. + The time in seconds that a rigid-body must be still before it will go to sleep. - + - 1 based page number requested. + The number of iterations of the physics solver when considering objects' velocities. - + - Number of results per page to be returned. + Any collisions with a relative linear velocity below this threshold will be treated as inelastic. - + - Class constructor. + Layer mask constant that includes all layers. - + - Accessor to verify if the contained data is a valid request with respect to initialized variables and accepted parameters. + 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. + - + - Provides string description of current class data. + 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 or depth buffer, or normal angle. + + Returns the number of results placed in the results array. + - + - JSON response for a ListMatchRequest. It contains a list of matches that can be parsed through to describe a page of matches. + 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. + - + - List of matches fitting the requested description. + 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. + - + - Constructor for response class. + Casts a capsule against colliders in the scene, returning the first collider to contact with it. - A list of matches to give to the object. Only used when generating a new response and not used by callers of a ListMatchRequest. - + 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. + - + - Constructor for response class. + Casts a capsule against the colliders in the Scene and returns all colliders that are in contact with it. - A list of matches to give to the object. Only used when generating a new response and not used by callers of a ListMatchRequest. - + 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 or depth buffer, 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. + - + - Provides string description of current class data. + 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. + - + - A member contained in a ListMatchResponse.matches list. Each element describes an individual match. + 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. + - + - The optional game defined Elo score for the match as a whole. The Elo score is averaged against all clients in a match and that value is used to produce better search results when listing available matches. -If the Elo is provided the result set will be ordered according to the magnitude of the absoloute value of the difference of the a client searching for a match and the network average for all clients in each match. If the Elo score is not provided (and therefore 0 for all matches) the Elo score will not affect the search results. -Each game can calculate this value as they wish according to whatever scale is best for that game. + 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. + - + - Current number of users connected to a match. + 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 or depth buffer, 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. + - + - Direct connection info for network games; This is not required for games utilizing matchmaker. + 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. + - + - The NodeID of the host in a matchmaker match. + 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. + - + - Describes if this match is considered private. + Layer mask constant that includes all layers participating in raycasts by default. - + - Match attributes describing game specific features for this match. Each attribute is a key/value pair of a string key with a long value. Each match may have up to 10 of these values. -The game is free to use this as desired to assist in finding better match results when clients search for matches to join. + 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. + - + - Max number of users that may connect to a match. + 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. + - + - Name of the match. + 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. + - + - NetworkID of the match. + 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. + - + - Provides string description of current class data. + 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. + - + - Class describing a client in a network match. + 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. + - + - NodeID of the client described in this direct connect info. + 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. + - + - Private address the client described by this class provided. + 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. + - + - Public address the client described by this class provided. + 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. + - + - Details about a UNET Matchmaker match. + 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. + - + - The binary access token this client uses to authenticate its session for future commands. + 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. + - + - IP address of the host of the match,. + 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. + - + - The unique ID of this match. + 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. + - + - NodeID for this member client in the match. + 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. + - + - Port of the host of the match. + 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. + - + - Flag to say if the math uses a relay server. + 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. - + - A component for communicating with the UNET Matchmaking service. + 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? - + - The base URI of the UNET MatchMaker that this NetworkMatch will communicate with. + Layer mask constant for the default layer that ignores raycasts. - + - A match accessor to create a new match hosted on this client. + Checks whether the passed colliders are in contact or not. - A CreateMatchRequest describing the match to create. - A callback delegate that takes a CreateMatchResponse that indicates the return of the request after coroutine processing. - Name of match to create. - Maximum number of users in the match. - Flag to advertise this match in searches. - Password required to enter the match. + The collider to check if it is touching collider2. + The collider to check if it is touching collider1. - A coroutine for managing the async operation. if using the callback, this can be ignored. + Whether collider1 is touching collider2 or not. - + - A match accessor to create a new match hosted on this client. + Checks whether the passed colliders are in contact or not. - A CreateMatchRequest describing the match to create. - A callback delegate that takes a CreateMatchResponse that indicates the return of the request after coroutine processing. - Name of match to create. - Maximum number of users in the match. - Flag to advertise this match in searches. - Password required to enter the match. + 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. - A coroutine for managing the async operation. if using the callback, this can be ignored. + Whether the collider is touching any other collider filtered by the contactFilter or not. - + - Destroy a match (that this client owns) on the UNET Matchmaker. + Checks whether the passed colliders are in contact or not. - A callback delegate that takes a BasicResponse that indicates the return of the request after coroutine processing. - A CreateMatchRequest describing the match to destroy. - Id of the match to destroy. + 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. - A coroutine for managing the async operation. if using the callback, this can be ignored. + Whether collider1 is touching collider2 or not. - + - Destroy a match (that this client owns) on the UNET Matchmaker. + Checks whether the collider is touching any colliders on the specified layerMask or not. - A callback delegate that takes a BasicResponse that indicates the return of the request after coroutine processing. - A CreateMatchRequest describing the match to destroy. - Id of the match to destroy. + The collider to check if it is touching colliders on the layerMask. + Any colliders on any of these layers count as touching. - A coroutine for managing the async operation. if using the callback, this can be ignored. + Whether the collider is touching any colliders on the specified layerMask or not. - + - This causes a client to be dropped from a UNET Matchmaker match. + Casts a line segment against colliders in the Scene. - A callback delegate that takes a BasicResponse that indicates the return of the request after coroutine processing. - A DropConnectionRequest describing the match to destroy. - Id of the match to drop from. - NodeId of the client to drop. + 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. - A coroutine for managing the async operation. if using the callback, this can be ignored. + The cast results returned. - + - This causes a client to be dropped from a UNET Matchmaker match. + Casts a line segment against colliders in the Scene with results filtered by ContactFilter2D. - A callback delegate that takes a BasicResponse that indicates the return of the request after coroutine processing. - A DropConnectionRequest describing the match to destroy. - Id of the match to drop from. - NodeId of the client to drop. + 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 or depth buffer, or normal angle. - A coroutine for managing the async operation. if using the callback, this can be ignored. + Returns the number of results placed in the results array. - + - Join a match on the UNET Matchmaker. + Casts a line against colliders in the scene. - A callback delegate that takes a JoinMatchResponse that indicates the return of the request after coroutine processing. - A JoinMatchRequest describing the match to destroy. - Id of the match to join. - Password to join with. + 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. - A coroutine for managing the async operation. if using the callback, this can be ignored. + The cast results returned. - + - Join a match on the UNET Matchmaker. + Casts a line against colliders in the scene. - A callback delegate that takes a JoinMatchResponse that indicates the return of the request after coroutine processing. - A JoinMatchRequest describing the match to destroy. - Id of the match to join. - Password to join with. + 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. - A coroutine for managing the async operation. if using the callback, this can be ignored. + Returns the number of results placed in the results array. - + - This requests a list of the active matches from a UNET MatchMaker. + Checks if a collider falls within a rectangular area. - A callback delegate that takes a JoinMatchResponse that indicates the return of the request after coroutine processing. - A ListMatchRequest describing the match to destroy. - First page of results. - Number of matches in each page. - String to filter names on. + 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. - A coroutine for managing the async operation. if using the callback, this can be ignored. + The collider overlapping the area. - + - This requests a list of the active matches from a UNET MatchMaker. + Checks if a collider falls within a rectangular area. - A callback delegate that takes a JoinMatchResponse that indicates the return of the request after coroutine processing. - A ListMatchRequest describing the match to destroy. - First page of results. - Number of matches in each page. - String to filter names on. + 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, and Z or depth buffer. Note that normal angle is not used for overlap testing. - A coroutine for managing the async operation. if using the callback, this can be ignored. + Returns the number of results placed in the results array. - - - Delegate for responses from matchmaker. - - - - - - Set this before calling any UNET functions. Must match AppID for this program from the Cloud API. - - AppID that corresponds to the Cloud API AppID for this app. - - - - Abstract base for requests, which includes common info in all requests. - - - - - The JSON encoded binary access token this client uses to authenticate its session for future commands. - - - + - AppID for the current game, required in every request. This is generated from the Cloud API. + 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. + - + - Domain for the request. All commands will be sandboxed to their own domain; For example no clients with domain 1 will see matches with domain 2. This can be used to prevent incompatible client versions from communicating. + 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. + - + - The Cloud Project Id for this game, required in every request. This is used to match games of the same type. + 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. + - + - SourceID for the current client, required in every request. This is generated from the Cloud API. + 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, and Z or depth buffer. 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. + - + - Matchmaker protocol version info. + 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. + - + - Accessor to verify if the contained data is a valid request with respect to initialized variables and accepted parameters. + 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. + - + - Provides string description of current class data. + 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. + - + - Abstract class that contains shared accessors for any response. + 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, and Z or depth buffer. 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. + - + - Extended string information that is returned when the server encounters an error processing a request. + 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. + - + - Bool describing if the request was successful. + 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. + - + - Provides string description of current class data. + 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. + - + - A response object base. + 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, and Z or depth buffer. 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. + - + - Possible transport layer erors. + 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. + - + - Obsolete. + 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. + - + - Two ends of connection have different agreement about channels, channels qos and network parameters. + 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. + - + - The address supplied to connect to was invalid or could not be resolved. + 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. + - + - Sending message too long to fit internal buffers, or user doesn't present buffer with length enouf to contain receiving message. + 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, and Z or depth buffer. 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. + - + - No internal resources ro acomplish request. + 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. + - + - Everything good so far. + 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. + - + - Timeout happened. + 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. + - + - Different version of protocol on ends of connection. + 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 or depth buffer, 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. + - + - Channel doesn't exist. + 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. + - + - Connection doesn't exist. + 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. + - + - Host doesn't exist. + 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. - + - Operation is not supported. + Asset type that defines the surface properties of a Collider2D. - + - Type of events returned from Receive() function. + The degree of elasticity during collisions. - + - Broadcast discovery event received. To obtain sender connection info and possible complimentary message from him call GetBroadcastConnectionInfo() and GetBroadcastConnectionMessage() functions. + Coefficient of friction. - + - New connection has been connected. + A base type for 2D physics components that required a callback during FixedUpdate. - + - New data come in. + Ping any given IP address (given in dot notation). - + - Connection has been disconnected. + The IP target of the ping. - + - Nothing happened. + Has the ping function completed? - + - Low level (transport layer) API. + This property contains the ping time result after isDone returns true. - + - Will create a host (open socket) with given topology and optionally port and IP. + Perform a ping to the supplied target IP address. - The host topology for this host. - Bind to specific port, if 0 is selected the port will chosen by OS. - Bind to specific IP address. - - Returns host ID just created. - + - + - Create a host (open socket) and configure them to simulate internet latency (works on editor and development build only). + Representation of a plane in 3D space. - The host topology for this host. - Minimum simulated delay. - Maximum simulated delay. - Bind to specific port, if 0 is selected the port will chosen by OS. - Bind to specific IP address. - - Returns host ID just created. - - + - Created web socket host. -This function is supported only for Editor (Win, Linux, Mac) and StandalonePlayers (Win, Linux, Mac) -Topology is used to define how many client can connect, and how many messages should be preallocated in send and receive pool, all other parameters are ignored. + Distance from the origin to the plane. - Listening tcp port. - Topology. - - - Web socket host id. - - + - Try to establish connection to other peer. + Normal vector of the plane. - Host (actually socket) id for this connection. - Ip4 address. - Port. - 0 in the case of a default connection. - Possible error, kOK if it is good. - - ConnectionId on success (otherwise zero). - - + - Create dedicated connection to relay server. + Creates a plane. - Id of udp socket used to establish connection. - Ip4. - Port. - Guid of relay network. - Guid of user. - Possible error (<a href="Networking.NetworkError.html>NetworkError</a>.Ok if success). - Slot id for this user. + + - + - Try to establish connection to other peer, where the peer is specified using a C# System.EndPoint. + Creates a plane. - Host (actually socket) id for this connection. - Return kOk on success, otherwise a one-byte error code. - A valid System.EndPoint. - 0 in the case of a default connection. - - - ConnectionId on success (otherwise zero). - + + - + - Create connection to other peer in the relay group. + Creates a plane. - Id of udp socket used to establish connection. - IP. - Port. - Id of exception, default in case 0. - Id of remote peer in relay. - Guid of relay network. - Guid of user who want to establish connect (serve as tmp password). - Possible error. - Slot id reserved for user. - 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). - - ConnectionId on success (otherwise zero). - + + + - + - Create connection to other peer in the relay group. + Returns a signed distance from plane to point. - Id of udp socket used to establish connection. - IP. - Port. - Id of exception, default in case 0. - Id of remote peer in relay. - Guid of relay network. - Guid of user who want to establish connect (serve as tmp password). - Possible error. - Slot id reserved for user. - 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). - - ConnectionId on success (otherwise zero). - + - + - Connect with simulated latency. + Is a point on the positive side of the plane? - Host id. - Peer ip. - Peer port. - Special connection id or 0 for default. - Returned error. - Simulation configuration definec latency for this connection. - - ConnectionId on success (otherwise zero). - + - + - Send disconnect signal to peer and close connection. user should call Receive() to be notified that connection is closed. This signal will send only once (best effort delivery) iif this packet will dropped by some reason, peer will close connection by timeout. + Intersects a ray with the plane. - Id of udp socket used to establish connection. - Id of closing connection. - kOK if it was successful. + + - + - Aplyed only for client which has been already owner of the same group of relay server. it will disconnect this owner from the group, group will be distracted or (if it supported) one of the member of this group should became new owner (owner migration). + Are two points on the same side of the plane? - Id of udp socket used to. - kOk in case success. + + - + - Function will finalize sending message to group of connection. (only one multicast message per time is allowed for host). + 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. - Id of udp socket used to establish connection. - Possible error (kOK in case success). + First point in clockwise order. + Second point in clockwise order. + Third point in clockwise order. - + - The UNet spawning system uses assetIds to identify how spawn remote objects. This function allows you to get the assetId for the prefab associated with an object. + Sets a plane using a point that lies within it along with a normal to orient it. - Target game object to get asset Id for. - - The assetId of the game object's prefab. - + The plane's normal vector. + A point that lies on the plane. - + - If Receive() function returns BroadcastEvent, immedeately this function will return connection info of broadcast sender. This info can be used for connection to broadcast sender. + Applies "platform" behaviour such as one-way collisions etc. - Id of broadcast receiver (returns with Receve() function). - Ip address of broadcast sender. - Port of broadcast sender. - Possible error. - + - If Receive() function returns BroadcastEvent, immedeately this function will return complimentary message of broadcast sender. + Whether to use one-way collision behaviour or not. - Id of broadcast receiver (returns with Receve() function). - Message buffer provided by caller. - Buffer size. - Received size (if received size > bufferSize, corresponding error will be set). - Possible error. - + - Return connection parameters of connected connection, this parameters can be sent to other user which can establish direct connection to this peer. If peer connected via relay, relay related parameters will be not invalid. + The rotational offset angle from the local 'up'. - Id of udp socket used to. - Id of connection. - Ip4. - Port. - Relay network guid. - Possible error. - Destination slot id. - + - Return value of messages waiting for reading. + The angle variance centered on the sides of the platform. Zero angle only matches sides 90-degree to the platform "top". - + - Return total message amount waiting for sending. + 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. - + - Return round trip time for connection. + Whether bounce should be used on the platform sides or not. - Id of udp socket used to. - Id of connection. - Possible error. - + - Function returns time spent on network io operations in micro seconds. + Whether friction should be used on the platform sides or not. - - Time in micro seconds. - - + - Return total number of packets has been lost from start. + The angle of an arc that defines the surface of the platform centered of the local 'up' of the effector. - Id of udp socket used to. - Id of connection. - Possible error. - + - Get UNET timestamp which can be added to message for further definitions of packet delaying. + Should the one-way collision behaviour be used? - + - Return current receive rate in bytes per sec. + Ensures that all contacts controlled by the one-way behaviour act the same. - Id of udp socket used to. - Id of connection. - Possible error. - + - Reurn outgoing rate in bytes per second. + Should bounce be used on the platform sides? - Id of udp socket used to. - Connection id. - Possible error. - + - Return time delay for timestamp received from message (previously created by GetNetworkTimestamp()). + Should friction be used on the platform sides? - Id of udp socket used to. - Id of connection. - Timestamp delivered from peer. - Possible error. - + - Obsolete will be removed. Use GetNetworkLostPacketNum() instead. + Stores and accesses player preferences between game sessions. - Id of udp socket used to. - Id of connection. - Possible error. - + - First function which should be called before any other NetworkTransport function. + Removes all keys and values from the preferences. Use with caution. - + - Check if broadcastdiscovery sender works. + Removes key and its corresponding value from the preferences. - - True if it works. - + - + - Obsolete, will be removed. + Returns the value corresponding to key in the preference file if it exists. + + - + - Delivered different network events to user. kConnectionEvent will notify about new connection established, kDisconnectEvent will report about disconnection happened, kDataEvent will report about new information delivered. Use must represent buffer for delivered data. + Returns the value corresponding to key in the preference file if it exists. - Id of udp socket where event happened. - Connection id for event. - Channel id for data event. - Prepared incoming buffer. - Prepared buffer size. - Actually received length. - Possible error. + + - + - Similar to Receive() but will ask only provided host. It for example allows to mix server/client in the same game. + Returns the value corresponding to key in the preference file if it exists. - Id of udp socket used to check for event. - Connection id for event. - Channel id for data event. - Prepared incoming buffer. - Prepared buffer size. - Actually received length. - Possible error. + + - + - Function delivered relay group event for group owner. + Returns the value corresponding to key in the preference file if it exists. - Id of udp socket used to check for event. - Possible error. + + - + - Close opened socket, close all connection belonging this socket. + Returns the value corresponding to key in the preference file if it exists. - If of opened udp socket. + + - + - Send data to peer. + Returns the value corresponding to key in the preference file if it exists. - Id of udp socket using for send. - Id of connection. - If for channel. - Binary buffer containing data for sending. - Buffer size. - Possible error. + + - + - Function adds another connection to multy peer sends. + Returns true if key exists in the preferences. - Id of udp socket used for sending. - Connection id. - Possible error. + - + - Set credentials for received broadcast message. If one of credentials is wrong, received brodcast discovery message will drop. + Writes all modified preferences to disk. - Id of the host whihc will receive broadcast discovery message. - Credential. - Credential. - Credential. - Possible error. - + - Used to inform the profiler of network packet statistics. + Sets the value of the preference identified by key. - The Id of the message being reported. - Number of message being reported. - Number of bytes used by reported messages. + + - + - Shutdown the transport layer, after calling this function no any other function can be called. + Sets the value of the preference identified by key. + + - + - Function starts send broadcasting message in all local subnets. + Sets the value of the preference identified by key. - Host id which should be reported via broadcast (broadcast receivers will connect to this host). - Port using for broadcast message (usuall port of broadcast receivers). - Part of credentials, if key of receiver will not be equal to key of sender broadcast message will drop. - Part of credentials. - Part of credentials. - Complimentary message. This message will delivered to receiver with Broadcast event. - Size of message. - How often broadcast message shoule be sent (ms). - Error. - - Return true if broadcasting request has been submitted. - + + - + - Start process sending message per group of connected connection. + An exception thrown by the PlayerPrefs class in a web player build. - Id of udp socket used to establish connection. - First connection id from group connection. - Data buffer. - Data buffer length. - Possible error. - + - Stop sending broadcast discovery message. + Used by Animation.Play function. - + - Descibed allowed types of quality of service for channels. + Will stop all animations that were started with this component before playing. - + - Reliable message will resend almost with each frame, without waiting delivery notification. usefull for important urgent short messages, like a shoot. + Will stop all animations that were started in the same layer. This is the default when playing animations. - + - Channel will be configured as relaiable, each message sent in this channel will be delivered or connection will be disconnected. + Applies forces to attract/repulse against a point. - + - Same as reliable, but big messages are allowed (up to 32 fragment with fragmentsize each for message). + The angular drag to apply to rigid-bodies. - + - The same as reliable, but with granting message order. + The scale applied to the calculated distance between source and target. - + - The same as StateUpdate, but reliable. + The linear drag to apply to rigid-bodies. - + - Unreliable, only last message in send buffer will be sent, only most recent message in reading buffer will be delivered. + The magnitude of the force to be applied. - + - Just sending message, no grants. + The mode used to apply the effector force. - + - The same as unreliable, but big message (up to 32 fragment per message) can be sent. + The source which is used to calculate the centroid point of the effector. The distance from the target is defined from this point. - + - The same as unrelaible but all unorder messages will be dropped. Example: VoIP. + The target for where the effector applies any force. - + - Define how unet will handle network io operation. + The variation of the magnitude of the force to be applied. - + - 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. + Collider for 2D physics representing an arbitrary polygon defined by its vertices. - + - 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). + Determines whether the PolygonCollider2D's shape is automatically updated based on a SpriteRenderer's tiling properties. - + - The AppID identifies the application on the Unity Cloud or UNET servers. + The number of paths in the polygon. - + - Invalid AppID. + Corner points that define the collider's shape in local space. - + - Describes the access levels granted to this client. + 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. - + - Administration access level, generally describing clearence to perform game altering actions against anyone inside a particular match. + 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. + - + - Invalid access level, signifying no access level has been granted/specified. + Return the total number of points in the polygon in all paths. - + - Access level Owner, generally granting access for operations key to the peer host server performing it's work. + Define a path by its constituent points. + Index of the path to set. + Points that define the path. - + - User access level. This means you can do operations which affect yourself only, like disconnect yourself from the match. + Prefer ScriptableObject derived type to use binary serialization regardless of project's asset serialization mode. - + - Access token used to authenticate a client session for the purposes of allowing or disallowing match operations requested by that client. + The various primitives that can be created using the GameObject.CreatePrimitive function. - + - Binary field for the actual token. + A capsule primitive. - + - Accessor to get an encoded string from the m_array data. + A cube primitive. - + - 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). + A cylinder primitive. - + - Network ID, used for match making. + A plane primitive. - + - Invalid NetworkID. + A Quad primitive. - + - The NodeID is the ID used in relay matches to track nodes in a network. + A sphere primitive. - + - The invalid case of a NodeID. + Substance memory budget. - + - Identifies a specific game instance. + A limit of 512MB for the cache or the working memory. - + - Invalid SourceID. + A limit of 256MB for the cache or the working memory. - + - Describes different levels of log information the network layer supports. + No limit for the cache or the working memory. - + - Full debug level logging down to each individual message being reported. + A limit of 1B (one byte) for the cache or the working memory. - + - Report informational messages like connectivity events. + A limit of 128MB for the cache or the working memory. - + - Only report errors, otherwise silent. + ProceduralMaterial loading behavior. - + - This data structure contains information on a message just received from the network. + Bake the textures to speed up loading and discard the ProceduralMaterial data (default on unsupported platform). - + - The NetworkView who sent this message. + Bake the textures to speed up loading and keep the ProceduralMaterial data so that it can still be tweaked and regenerated later on. - + - The player who sent this network message (owner). + Generate the textures when loading and cache them to diskflash to speed up subsequent gameapplication startups. - + - The time stamp when the Message was sent in seconds. + Does not generate the textures automatically when the scene is loaded as it is set to "DoNothing". RebuildTextures() or RebuildTexturesImmediately() must be called to generate the textures. - + - Describes the status of the network interface peer type as returned by Network.peerType. + Does not generate the textures automatically when the scene is loaded as it is set to "DoNothing". RebuildTextures() or RebuildTexturesImmediately() must be called to generate the textures. After the textures have been generrated for the first time, they are cached to diskflash to speed up subsequent gameapplication startups. This setting will not load the cached textures automatically when the scene is loaded as it is still set to "DoNothing". RebuildTextures() or RebuildTexturesImmediately() must be called again to load the previously cached textures. - + - Running as client. + Generate the textures when loading to favor application's size (default on supported platform). - + - Attempting to connect to a server. + Class for ProceduralMaterial handling. - + - No client connection running. Server not initialized. + Set or get the update rate in millisecond of the animated substance. - + - Running as server. + Set or get the Procedural cache budget. - + - The NetworkPlayer is a data structure with which you can locate another player over the network. + Indicates whether cached data is available for this ProceduralMaterial's textures (only relevant for Cache and DoNothingAndCache loading behaviors). - + - Returns the external IP address of the network interface. + Returns true if FreezeAndReleaseSourceData was called on this ProceduralMaterial. - + - Returns the external port of the network interface. + Should the ProceduralMaterial be generated at load time? - + - The GUID for this player, used when connecting with NAT punchthrough. + Check if the ProceduralTextures from this ProceduralMaterial are currently being rebuilt. - + - The IP address of this player. + Set or get the "Readable" flag for a ProceduralMaterial. - + - The port of this player. + Check if ProceduralMaterials are supported on the current platform. - + - Returns true if two NetworkPlayers are the same player. + Get ProceduralMaterial loading behavior. - - - + - Returns true if two NetworkPlayers are not the same player. + Set or get an XML string of "input/value" pairs (setting the preset rebuilds the textures). - - - + - Returns the index number for this network player. + Used to specify the Substance engine CPU usage. - + - Describes network reachability options. + Specifies if a named ProceduralProperty should be cached for efficient runtime tweaking. + + - + - Network is not reachable. + Clear the Procedural cache. - + - Network is reachable via carrier data network. + Render a ProceduralMaterial immutable and release the underlying data to decrease the memory footprint. - + - Network is reachable via WiFi or cable. + This allows to get a reference to a ProceduralTexture generated by a ProceduralMaterial using its name. + The name of the ProceduralTexture to get. - + - Different types of synchronization for the NetworkView component. + Get generated textures. - + - No state data will be synchronized. + Get a named Procedural boolean property. + - + - All packets are sent reliable and ordered. + Get a named Procedural color property. + - + - Brute force unreliable state sending. + Get a named Procedural enum property. + - + - The network view is the binding material of multiplayer games. + Get a named Procedural float property. + - + - The network group number of this network view. + Get an array of descriptions of all the ProceduralProperties this ProceduralMaterial has. - + - Is the network view controlled by this object? + Get a named Procedural texture property. + - + - The component the network view is observing. + Get a named Procedural vector property. + - + - The NetworkPlayer who owns this network view. + Checks if the ProceduralMaterial has a ProceduralProperty of a given name. + - + - The type of NetworkStateSynchronization set for this network view. + Checks if a named ProceduralProperty is cached for efficient runtime tweaking. + - + - The ViewID of this network view. + Checks if a given ProceduralProperty is visible according to the values of this ProceduralMaterial's other ProceduralProperties and to the ProceduralProperty's visibleIf expression. + The name of the ProceduralProperty whose visibility is evaluated. - + - Find a network view based on a NetworkViewID. + Triggers an asynchronous rebuild of this ProceduralMaterial's dirty textures. - - + - Call a RPC function on all connected peers. + Triggers an immediate (synchronous) rebuild of this ProceduralMaterial's dirty textures. - - - - + - Call a RPC function on a specific player. + Set a named Procedural boolean property. - - - + + - + - Set the scope of the network view in relation to a specific network player. + Set a named Procedural color property. - - + + - + - The NetworkViewID is a unique identifier for a network view instance in a multiplayer game. + Set a named Procedural enum property. + + - + - True if instantiated by me. + Set a named Procedural float property. + + - + - The NetworkPlayer who owns the NetworkView. Could be the server. + Set a named Procedural texture property. + + - + - Represents an invalid network view ID. + Set a named Procedural vector property. + + - + - Returns true if two NetworkViewIDs are identical. + Discard all the queued ProceduralMaterial rendering operations that have not started yet. - - - + - Returns true if two NetworkViewIDs are not identical. + The type of generated image in a ProceduralMaterial. - - - + - Returns a formatted string with details on this NetworkViewID. + Ambient occlusion map. - + - NPOT Texture2D|textures support. + Detail mask map. - + - Full NPOT support. + Diffuse map. - + - NPOT textures are not supported. Will be upscaled/padded at loading time. + Emissive map. - + - Limited NPOT support: no mip-maps and clamp TextureWrapMode|wrap mode will be forced. + Height map. - + - Base class for all objects Unity can reference. + Metalness map. - + - Should the object be hidden, saved with the scene or modifiable by the user? + Normal (Bump) map. - + - The name of the object. + Opacity (Tranparency) map. - + - Removes a gameobject, component or asset. + Roughness map. - The object to destroy. - The optional amount of time to delay before destroying the object. - + - Removes a gameobject, component or asset. + Smoothness map (formerly referred to as Glossiness). - 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. + Specular map. - Object to be destroyed. - Set to true to allow assets to be destoyed. - + - Destroys the object obj immediately. You are strongly recommended to use Destroy instead. + Undefined type. - Object to be destroyed. - Set to true to allow assets to be destoyed. - + - Makes the object target not be destroyed automatically when loading a new scene. + The global Substance engine processor usage (as used for the ProceduralMaterial.substanceProcessorUsage property). - - + - Returns the first active loaded object of Type type. + All physical processor cores are used for ProceduralMaterial generation. - The type of object to find. - - An array of objects which matched the specified type, cast as Object. - - + - Returns a list of all active loaded objects of Type type. + Half of all physical processor cores are used for ProceduralMaterial generation. - 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. + A single physical processor core is used for ProceduralMaterial generation. - 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. + Exact control of processor usage is not available. - 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. + Describes a ProceduralProperty. - + - Does the object exist? + The names of the individual components of a Vector234 ProceduralProperty. - - + - Clones the object original and returns the clone. + The available options for a ProceduralProperty of type Enum. - An existing object that you want to make a copy of. - Position for the new object. - Orientation of the new object. - + - Clones the object original and returns the clone. + The name of the GUI group. Used to display ProceduralProperties in groups. - An existing object that you want to make a copy of. - Position for the new object. - Orientation of the new object. - + - Generic version. See the page for more details. + If true, the Float or Vector property is constrained to values within a specified range. - - + - Compares two object references to see if they refer to the same object. + The label of the ProceduralProperty. Can contain space and be overall more user-friendly than the 'name' member. - The first Object. - The Object to compare against the first. - + - Compares if two objects refer to a different object. + If hasRange is true, maximum specifies the maximum allowed value for this Float or Vector property. - - - + - Returns the name of the game object. + If hasRange is true, minimum specifies the minimum allowed value for this Float or Vector property. - + - Level of obstacle avoidance. + The name of the ProceduralProperty. Used to get and set the values. - + - Good avoidance. High performance impact. + Specifies the step size of this Float or Vector property. Zero is no step. - + - Enable highest precision. Highest performance impact. + The ProceduralPropertyType describes what type of property this is. - + - Enable simple avoidance. Low performance impact. + The type of a ProceduralProperty. - + - Medium avoidance. Medium performance impact. + Procedural boolean property. Use with ProceduralMaterial.GetProceduralBoolean. - + - Disable avoidance. + Procedural Color property without alpha. Use with ProceduralMaterial.GetProceduralColor. - + - OcclusionArea is an area in which occlusion culling is performed. + Procedural Color property with alpha. Use with ProceduralMaterial.GetProceduralColor. - + - Center of the occlusion area relative to the transform. + Procedural Enum property. Use with ProceduralMaterial.GetProceduralEnum. - + - Size that the occlusion area will have. + Procedural float property. Use with ProceduralMaterial.GetProceduralFloat. - + - The portal for dynamically changing occlusion at runtime. + Procedural Texture property. Use with ProceduralMaterial.GetProceduralTexture. - + - Gets / sets the portal's open state. + Procedural Vector2 property. Use with ProceduralMaterial.GetProceduralVector. - + - Link allowing movement outside the planar navigation mesh. + Procedural Vector3 property. Use with ProceduralMaterial.GetProceduralVector. - + - Is link active. + Procedural Vector4 property. Use with ProceduralMaterial.GetProceduralVector. - + - NavMesh area index for this OffMeshLink component. + Class for ProceduralTexture handling. - + - Automatically update endpoints. + The format of the pixel data in the texture (Read Only). - + - Can link be traversed in both directions. + Check whether the ProceduralMaterial that generates this ProceduralTexture is set to an output format with an alpha channel. - + - Modify pathfinding cost for the link. + Grab pixel values from a ProceduralTexture. + + X-coord of the top-left corner of the rectangle to grab. + Y-coord of the top-left corner of the rectangle to grab. + Width of rectangle to grab. + Height of the rectangle to grab. +Get the pixel values from a rectangular area of a ProceduralTexture into an array. +The block is specified by its x,y offset in the texture and by its width and height. The block is "flattened" into the array by scanning the pixel values across rows one by one. - + - The transform representing link end position. + The output type of this ProceduralTexture. - + - NavMeshLayer for this OffMeshLink component. + Custom CPU Profiler label used for profiling arbitrary code blocks. - + - Is link occupied. (Read Only) + Begin profiling a piece of code with a custom label defined by this instance of CustomSampler. + - + - The transform representing link start position. + Begin profiling a piece of code with a custom label defined by this instance of CustomSampler. + - + - Explicitly update the link endpoints. + 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. + - + - State of OffMeshLink. + End profiling a piece of code with a custom label. - + - Is link active (Read Only). + Controls the from script. - + - Link end world position (Read Only). + Sets profiler output file in built players. - + - Link type specifier (Read Only). + Enables the Profiler. - + - The OffMeshLink if the link type is a manually placed Offmeshlink (Read Only). + Sets profiler output file in built players. - + - Link start world position (Read Only). + Resize the profiler sample buffers to allow the desired amount of samples per thread. - + - Is link valid (Read Only). + Heap size used by the program. + + Size of the used heap in bytes, (or 0 if the profiler is disabled). + - + - Link type specifier. + 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). + - + - Vertical drop. + Displays the recorded profiledata in the profiler. + - + - Horizontal jump. + Begin profiling a piece of code with a custom label. + + - + - Manually specified type of link. + Begin profiling a piece of code with a custom label. + + - + - (Legacy Particle system). + End profiling a piece of code with a custom label. - + - The angular velocity of the particle. + Returns the size of the mono heap. - + - The color of the particle. + 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. + - + - The energy of the particle. + Returns the used size from mono. - + - The position of the particle. + 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. + - + - The rotation of the particle. + Returns the runtime memory usage of the resource. + - + - The size of the particle. + 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. + - + - The starting energy of the particle. + Returns the size of the temp allocator. + + Size in bytes. + - + - The velocity of the particle. + Returns the amount of allocated and used system memory. - + - (Legacy Particles) Particle animators move your particles over time, you use them to apply wind, drag & color cycling to your particle emitters. + 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. + - + - Does the GameObject of this particle animator auto destructs? + Returns the amount of reserved system memory. - + - Colors the particles will cycle through over their lifetime. + The total memory Unity has reserved. + + Memory reserved by Unity in bytes. This returns 0 if the Profiler is not available. + - + - How much particles are slowed down every frame. + Returns the amount of reserved but not used system memory. - + - Do particles cycle their color over their lifetime? + 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. + - + - The force being applied to particles every frame. + 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). + - + - Local space axis the particles rotate around. + Records profiling data produced by a specific Sampler. - + - A random force added to particles every frame. + Accumulated time of Begin/End pairs for the previous frame in nanoseconds. (Read Only) - + - How the particle sizes grow over their lifetime. + Enables recording. - + - World space axis the particles rotate around. + Returns true if Recorder is valid and can collect data. (Read Only) - + - Information about a particle collision. + Number of time Begin/End pairs was called during the previous frame. (Read Only) - + - The Collider for the GameObject struck by the particles. + Use this function to get a Recorder for the specific Profiler label. + Sampler name. + + Recorder object for the specified Sampler. + - + - The Collider or Collider2D for the GameObject struck by the particles. + Provides control over a CPU Profiler label. - + - Intersection point of the collision in world coordinates. + Returns true if Sampler is valid. (Read Only) - + - Geometry normal at the intersection point of the collision. + Sampler name. (Read Only) - + - Incident velocity at the intersection point of the collision. + Returns Sampler object for the specific CPU Profiler label. + Profiler Sampler name. + + Sampler object which represents specific profiler label. + - + - (Legacy Particles) Script interface for particle emitters. + 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. + - + - The angular velocity of new particles in degrees per second. + Returns Recorder associated with the Sampler. + + Recorder object associated with the Sampler. + - + - Should particles be automatically emitted each frame? + A script interface for a. - + - The amount of the emitter's speed that the particles inherit. + The aspect ratio of the projection. - + - Turns the ParticleEmitter on or off. + The far clipping plane distance. - + - The starting speed of particles along X, Y, and Z, measured in the object's orientation. + The field of view of the projection in degrees. - + - The maximum number of particles that will be spawned every second. + Which object layers are ignored by the projector. - + - The maximum lifetime of each particle, measured in seconds. + The material that will be projected onto every object. - + - The maximum size each particle can be at the time when it is spawned. + The near clipping plane distance. - + - The minimum number of particles that will be spawned every second. + Is the projection orthographic (true) or perspective (false)? - + - The minimum lifetime of each particle, measured in seconds. + Projection's half-size when in orthographic mode. - + - The minimum size each particle can be at the time when it is spawned. + Base class to derive custom property attributes from. Use this to create custom attributes for script variables. - + - The current number of particles (Read Only). + Optional field to specify the order that multiple DecorationDrawers should be drawn in. - + - Returns a copy of all particles and assigns an array of all particles to be the current particles. + 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". - + - A random angular velocity modifier for new particles. + Initializes the PropertyName using a string. + - + - If enabled, the particles will be spawned with random rotations. + Determines whether this instance and a specified object, which must also be a PropertyName object, have the same value. + - + - A random speed along X, Y, and Z that is added to the velocity. + Returns the hash code for this PropertyName. - + - If enabled, the particles don't move when the emitter moves. If false, when you move the emitter, the particles follow it around. + Converts the string passed into a PropertyName. See Also: PropertyName.ctor(System.String). + - + - The starting speed of particles in world space, along X, Y, and Z. + Indicates whether the specified PropertyName is an Empty string. + - + - Removes all particles from the particle emitter. + 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. + + - + - Emit a number of particles. + Determines whether two specified PropertyName have a different string value. + + - + - Emit count particles immediately. + For debugging purposes only. Returns the string value representing the string in the Editor. +Returns "UnityEngine.PropertyName" in the player. - - + - Emit a single particle with given parameters. + Script interface for. - The position of the particle. - The velocity of the particle. - The size of the particle. - The remaining lifetime of the particle. - The color of the particle. - + - + Active color space (Read Only). - The initial rotation of the particle in degrees. - The angular velocity of the particle in degrees per second. - - - - - - + - Advance particle simulation by given time. + Global anisotropic filtering mode. - - + - Method extension for Physics in Particle System. + Set The AA Filtering option. - + - Get the particle collision events for a GameObject. Returns the number of events written to the array. + 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. - The GameObject for which to retrieve collision events. - Array to write collision events to. - - + - Safe array size for use with ParticleSystem.GetCollisionEvents. + 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. - - + - (Legacy Particles) Renders particles on to the screen. + If enabled, billboards will face towards camera position rather than camera orientation. - + - How much are the particles strected depending on the Camera's speed. + Blend weights. - + - How much are the particles stretched in their direction of motion. + Desired color space (Read Only). - + - Clamp the maximum particle size. + Global multiplier for the LOD's switching distance. - + - How particles are drawn. + A texture size limit applied to all textures. - + - Set uv animation cycles. + A maximum LOD level. All LOD groups. - + - Set horizontal tiling count. + Maximum number of frames queued up by graphics driver. - + - Set vertical tiling count. + The indexed list of available Quality Settings. - + - How much are the particles strectched depending on "how fast they move". + Budget for how many ray casts can be performed per frame for approximate collision testing. - + - The rendering mode for legacy particles. + The maximum number of pixel lights that should affect any object. - + - Render the particles as billboards facing the player. (Default) + Enables realtime reflection probes. - + - Render the particles as billboards always facing up along the y-Axis. + The normalized cascade distribution for a 2 cascade setup. The value defines the position of the cascade with respect to Zero. - + - Sort the particles back-to-front and render as billboards. + 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. - + - Stretch particles in the direction of motion. + Number of cascades to use for directional light shadows. - + - Render the particles as billboards always facing the player, but not pitching along the x-Axis. + Shadow drawing distance. - + - Script interface for particle systems (Shuriken). + Offset shadow frustum near plane. - + - Access the particle system collision module. + Directional light shadow projection. - + - Access the particle system color by lifetime module. + The default resolution of the shadow maps. - + - Access the particle system color over lifetime module. + Realtime Shadows type to be used. - + - The duration of the particle system in seconds (Read Only). + Should soft blending be used for particles? - + - Access the particle system emission module. + Use a two-pass shader for the vegetation in the terrain engine. - + - The rate of emission. + The VSync Count. - + - When set to false, the particle system will not emit particles. + Decrease the current quality level. + Should expensive changes be applied (Anti-aliasing etc). - + - Access the particle system external forces module. + Returns the current graphics quality level. - + - Access the particle system force over lifetime module. + Increase the current quality level. + Should expensive changes be applied (Anti-aliasing etc). - + - Scale being applied to the gravity defined by Physics.gravity. + Sets a new graphics quality level. + Quality index to set. + Should expensive changes be applied (Anti-aliasing etc). - + - Access the particle system velocity inheritance module. + Quaternions are used to represent rotations. - + - Is the particle system paused right now ? + Returns the euler angle representation of the rotation. - + - Is the particle system playing right now ? + The identity rotation (Read Only). - + - Is the particle system stopped right now ? + W component of the Quaternion. Don't modify this directly unless you know quaternions inside out. - + - Access the particle system limit velocity over lifetime module. + X component of the Quaternion. Don't modify this directly unless you know quaternions inside out. - + - Is the particle system looping? + Y component of the Quaternion. Don't modify this directly unless you know quaternions inside out. - + - The maximum number of particles to emit. + Z component of the Quaternion. Don't modify this directly unless you know quaternions inside out. - + - The current number of particles (Read Only). + Returns the angle in degrees between two rotations a and b. + + - + - The playback speed of the particle system. 1 is normal playback speed. + Creates a rotation which rotates angle degrees around axis. + + - + - If set to true, the particle system will automatically start playing on startup. + Constructs new Quaternion with given x,y,z,w components. + + + + - + - Random seed used for the particle system emission. If set to 0, it will be assigned a random value on awake. + The dot product between two rotations. + + - + - Access the particle system rotation by speed module. + Returns a rotation that rotates z degrees around the z axis, x degrees around the x axis, and y degrees around the y axis (in that order). + + + - + - Access the particle system rotation over lifetime module. + Returns a rotation that rotates z degrees around the z axis, x degrees around the x axis, and y degrees around the y axis (in that order). + - + - The scaling mode applied to particle sizes and positions. + Creates a rotation which rotates from fromDirection to toDirection. + + - + - Access the particle system shape module. + Returns the Inverse of rotation. + - + - This selects the space in which to simulate particles. It can be either world or local space. + Interpolates between a and b by t and normalizes the result afterwards. The parameter t is clamped to the range [0, 1]. + + + - + - Access the particle system size by speed module. + Interpolates between a and b by t and normalizes the result afterwards. The parameter t is not clamped. + + + - + - Access the particle system size over lifetime module. + Creates a rotation with the specified forward and upwards directions. + The direction to look in. + The vector that defines in which direction up is. - + - The initial color of particles when emitted. + Creates a rotation with the specified forward and upwards directions. + The direction to look in. + The vector that defines in which direction up is. - + - Start delay in seconds. + Are two quaternions equal to each other? + + - + - The total lifetime in seconds that particles will have when emitted. When using curves, this values acts as a scale on the curve. This value is set in the particle when it is create by the particle system. + Combines rotations lhs and rhs. + Left-hand side quaternion. + Right-hand side quaternion. - + - The initial rotation of particles when emitted. When using curves, this values acts as a scale on the curve. + Rotates the point point with rotation. + + - + - The initial 3D rotation of particles when emitted. When using curves, this values acts as a scale on the curves. + Rotates a rotation from towards to. + + + - + - The initial size of particles when emitted. When using curves, this values acts as a scale on the curve. + Set x, y, z and w components of an existing Quaternion. + + + + - + - The initial speed of particles when emitted. When using curves, this values acts as a scale on the curve. + Creates a rotation which rotates from fromDirection to toDirection. + + - + - Access the particle system sub emitters module. + Creates a rotation with the specified forward and upwards directions. + The direction to look in. + The vector that defines in which direction up is. - + - Access the particle system texture sheet animation module. + Creates a rotation with the specified forward and upwards directions. + The direction to look in. + The vector that defines in which direction up is. - + - Playback position in seconds. + Spherically interpolates between a and b by t. The parameter t is clamped to the range [0, 1]. + + + - + - Access the particle system velocity over lifetime module. + Spherically interpolates between a and b by t. The parameter t is not clamped. + + + - + - Script interface for a Burst. + Access the x, y, z, w components using [0], [1], [2], [3] respectively. - + - Maximum number of bursts to be emitted. + Converts a rotation to angle-axis representation (angles in degrees). + + - + - Minimum number of bursts to be emitted. + Returns a nicely formatted string of the Quaternion. + - + - The time that each burst occurs. + Returns a nicely formatted string of the Quaternion. + - + - Construct a new Burst with a time and count. + Overrides the global Physics.queriesHitTriggers. - Time to emit the burst. - Minimum number of particles to emit. - Maximum number of particles to emit. - - + - Remove all particles in the particle system. + Queries always report Trigger hits. - Clear all child particle systems as well. - + - Script interface for the Collision module. + Queries never report Trigger hits. - + - How much force is applied to each particle after a collision. + Queries use the global Physics.queriesHitTriggers setting. - + - Control which layers this particle system collides with. + Used by Animation.Play function. - + - How much speed is lost from each particle after a collision. + Will start playing after all other animations have stopped playing. - + - Enable/disable the Collision module. + Starts playing immediately. This can be used if you just want to quickly create a duplicate animation. - + - Allow particles to collide with dynamic colliders when using world collision mode. + Class for generating random data. - + - Allow particles to collide when inside colliders. + Returns a random point inside a circle with radius 1 (Read Only). - + - How much a particle's lifetime is reduced after a collision. + Returns a random point inside a sphere with radius 1 (Read Only). - + - The maximum number of collision shapes that will be considered for particle collisions. Excess shapes will be ignored. Terrains take priority. + Returns a random point on the surface of a sphere with radius 1 (Read Only). - + - The maximum number of planes it is possible to set as colliders. + Returns a random rotation (Read Only). - + - Kill particles whose speed falls below this threshold, after a collision. + Returns a random rotation with uniform distribution (Read Only). - + - Choose between 2D and 3D world collisions. + Gets/Sets the full internal state of the random number generator. - + - Specifies the accuracy of particle collisions against colliders in the scene. + Returns a random number between 0.0 [inclusive] and 1.0 [inclusive] (Read Only). - + - A multiplier applied to the size of each particle before collisions are processed. + 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. + - + - Send collision callback messages. + 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. + - + - The type of particle collision to perform. + 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. + - + - Size of voxels in the collision cache. + 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. + - + - Get a collision plane associated with this particle system. + Generates a random color from HSV and alpha ranges. - Specifies which plane to access. + 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]. - The plane. + A random color with HSV and alpha values in the input ranges. - + - Set a collision plane to be used with this particle system. + Initializes the random number generator state with a seed. - Specifies which plane to set. - The plane to set. + Seed used to initialize the random number generator. - + - Script interface for the Color By Speed module. + Returns a random float number between and min [inclusive] and max [inclusive] (Read Only). + + - + - The curve controlling the particle colors. + Returns a random integer number between min [inclusive] and max [exclusive] (Read Only). + + - + - Enable/disable the Color By Speed module. + Serializable structure used to hold the full internal state of the random number generator. See Also: Random.state. - + - Apply the color gradient between these minimum and maximum speeds. + Attribute used to make a float or int variable in a script be restricted to a specific range. - + - Script interface for the Color Over Lifetime module. + 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. - + - The curve controlling the particle colors. + Describes an integer range. - + - Enable/disable the Color Over Lifetime module. + The end index of the range (not inclusive). - + - Script interface for the Emission module. + The length of the range. - + - The current number of bursts. + The starting index of the range, where 0 is the first position, 1 is the second, 2 is the third, and so on. - + - Enable/disable the Emission module. + Constructs a new RangeInt with given start, length values. + The starting index of the range. + The length of the range. - + - The rate at which new particles are spawned. + Representation of rays. - + - The emission type. + The direction of the ray. - + - Get the burst array. + The origin point of the ray. - Array of bursts to be filled in. - - The number of bursts in the array. - - + - Set the burst array. + Creates a ray starting at origin along direction. - Array of bursts. - Optional array size, if burst count is less than array size. + + - + - Set the burst array. + Returns a point at distance units along the ray. - Array of bursts. - Optional array size, if burst count is less than array size. + - + - + Returns a nicely formatted string for this ray. - - - - - + - + - + Returns a nicely formatted string for this ray. - + - + - Emit count particles immediately. + A ray in 2D space. - Number of particles to emit. - + - Emit a number of particles from script. + The direction of the ray in world space. - Overidden particle properties. - Number of particles to emit. - + - Script interface for particle emission parameters. + The starting point of the ray in world space. - + - Override the angular velocity of emitted particles. + Creates a 2D ray starting at origin along direction. + origin + direction + + - + - Override the 3D angular velocity of emitted particles. + Get a point that lies a given distance along a ray. + Distance of the desired point along the path of the ray. - + - Override the axis of rotation of emitted particles. + Structure used to get information back from a raycast. - + - Override the position of emitted particles. + The barycentric coordinate of the triangle we hit. - + - Override the random seed of emitted particles. + The Collider that was hit. - + - Override the rotation of emitted particles. + The distance from the ray's origin to the impact point. - + - Override the 3D rotation of emitted particles. + The uv lightmap coordinate at the impact point. - + - Override the initial color of emitted particles. + The normal of the surface the ray hit. - + - Override the lifetime of emitted particles. + The impact point in world space where the ray hit the collider. - + - Override the initial size of emitted particles. + The Rigidbody of the collider that was hit. If the collider is not attached to a rigidbody then it is null. - + - Override the velocity of emitted particles. + The uv texture coordinate at the collision location. - + - Reverts angularVelocity and angularVelocity3D back to the values specified in the inspector. + The secondary uv texture coordinate at the impact point. - + - Revert the axis of rotation back to the value specified in the inspector. + The Transform of the rigidbody or collider that was hit. - + - Revert the position back to the value specified in the inspector. + The index of the triangle that was hit. - + - Revert the random seed back to the value specified in the inspector. + Information returned about an object detected by a raycast in 2D physics. - + - Reverts rotation and rotation3D back to the values specified in the inspector. + The centroid of the primitive used to perform the cast. - + - Revert the initial color back to the value specified in the inspector. + The collider hit by the ray. - + - Revert the lifetime back to the value specified in the inspector. + The distance from the ray origin to the impact point. - + - Revert the initial size back to the value specified in the inspector. + Fraction of the distance along the ray that the hit occurred. - + - Revert the velocity back to the value specified in the inspector. + The normal vector of the surface hit by the ray. - + - Script interface for the External Forces module. + The point in world space where the ray hit the collider's surface. - + - Enable/disable the External Forces module. + The Rigidbody2D attached to the object that was hit. - + - Multiplies the magnitude of applied external forces. + The Transform of the object that was hit. - + - Script interface for the Force Over Lifetime module. + A 2D Rectangle defined by X and Y position, width and height. - + - Enable/disable the Force Over Lifetime module. + The position of the center of the rectangle. - + - When randomly selecting values between two curves or constants, this flag will cause a new random force to be chosen on each frame. + The height of the rectangle, measured from the Y position. - + - Are the forces being applied in local or world space? + The position of the maximum corner of the rectangle. - + - The curve defining particle forces in the X axis. + The position of the minimum corner of the rectangle. - + - The curve defining particle forces in the Y axis. + The X and Y position of the rectangle. - + - The curve defining particle forces in the Z axis. + The width and height of the rectangle. - + - Get the particles of this particle system. + The width of the rectangle, measured from the X position. - Particle buffer that is used for writing particle state to. The return value is the number of particles written to this array. - - 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. + The X coordinate of the rectangle. - + - Curve to define how much emitter velocity is applied during the lifetime of a particle. + The maximum X coordinate of the rectangle. - + - Enable/disable the InheritVelocity module. + The minimum X coordinate of the rectangle. - + - How to apply emitter velocity to particles. + The Y coordinate of the rectangle. - + - Does the system have any live particles (or will produce more)? + The maximum Y coordinate of the rectangle. - Check all child particle systems as well. - - True if the particle system is still "alive", false if the particle system is done emitting particles and all particles are dead. - - + - Script interface for the Limit Velocity Over Lifetime module. + The minimum Y coordinate of the rectangle. - + - Controls how much the velocity that exceeds the velocity limit should be dampened. + Shorthand for writing new Rect(0,0,0,0). - + - Enable/disable the Limit Force Over Lifetime module. + 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. + - + - Maximum velocity curve, when not using one curve per axis. + 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. + - + - Maximum velocity curve for the X axis. + 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. + - + - Maximum velocity curve for the Y axis. + 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. - + - Maximum velocity curve for the Z axis. + + - + - Set the velocity limit on each axis separately. + Creates a rectangle given a size and position. + The position of the minimum corner of the rect. + The width and height of the rect. - + - Specifies if the velocity limits are in local space (rotated with the transform) or world space. + 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. + - + - Script interface for a Min-Max Curve. + Returns a point inside a rectangle, given normalized coordinates. + Rectangle to get a point inside. + Normalized coordinates to get a point for. - + - Set a constant for the upper bound. + Returns true if the rectangles are the same. + + - + - Set a constant for the lower bound. + 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? - + - Set a curve for the upper bound. + 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? - + - Set a curve for the lower bound. + 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 a multiplier to be applied to the curves. + Set components of an existing Rect. + + + + - + - Set the mode that the min-max curve will use to evaluate values. + Returns a nicely formatted string for this Rect. + - + - A single constant value for the entire curve. + Returns a nicely formatted string for this Rect. - Constant value. + - + - Use one curve when evaluating numbers along this Min-Max curve. + Offsets for rectangles, borders, etc. - 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. + Bottom edge size. - 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. + Shortcut for left + right. (Read Only) - The constant describing the minimum values to be evaluated. - The constant describing the maximum values to be evaluated. - + - Script interface for a Min-Max Gradient. + Left edge size. - + - Set a constant color for the upper bound. + Right edge size. - + - Set a constant color for the lower bound. + Top edge size. - + - Set a gradient for the upper bound. + Shortcut for top + bottom. (Read Only) - + - Set a gradient for the lower bound. + Add the border offsets to a rect. + - + - Set the mode that the min-max gradient will use to evaluate colors. + Creates a new rectangle with offsets. + + + + - + - A single constant color for the entire gradient. + Creates a new rectangle with offsets. - Constant color. + + + + - + - Use one gradient when evaluating numbers along this Min-Max gradient. + Remove the border offsets from a rect. - A single gradient for evaluating against. + - + - Randomly select colors based on the interval between the minimum and maximum constants. + Position, size, anchor and pivot information for a rectangle. - 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 position of the pivot of this RectTransform relative to the anchor reference point. - The gradient describing the minimum colors to be evaluated. - The gradient describing the maximum colors to be evaluated. - + - Script interface for a Particle. + The 3D position of the pivot of this RectTransform relative to the anchor reference point. - + - The angular velocity of the particle. + The normalized position in the parent RectTransform that the upper right corner is anchored to. - + - The 3D angular velocity of the particle. + The normalized position in the parent RectTransform that the lower left corner is anchored to. - + - The lifetime of the particle. + The offset of the upper right corner of the rectangle relative to the upper right anchor. - + - The position of the particle. + The offset of the lower left corner of the rectangle relative to the lower left anchor. - + - The random seed of the particle. + The normalized position in this RectTransform that it rotates around. - + - The random value of the particle. + Event that is invoked for RectTransforms that need to have their driven properties reapplied. + - + - The rotation of the particle. + The calculated rectangle in the local space of the Transform. - + - The 3D rotation of the particle. + The size of this RectTransform relative to the distances between the anchors. - + - The initial color of the particle. The current color of the particle is calculated procedurally based on this value and the active color modules. + An axis that can be horizontal or vertical. - + - The starting lifetime of the particle. + Horizontal. - + - The initial size of the particle. The current size of the particle is calculated procedurally based on this value and the active size modules. + Vertical. - + - The velocity of the particle. + Enum used to specify one edge of a rectangle. - + - Calculate the current color of the particle by applying the relevant curves to its startColor property. + The bottom edge. - 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 left edge. - The particle system from which this particle was emitted. - - Current size. - - + - Pauses playing the particle system. + The right edge. - Pause all child particle systems as well. - + - Plays the particle system. + The top edge. - Play all child particle systems as well. - + - Script interface for the Rotation By Speed module. + Get the corners of the calculated rectangle in the local space of its Transform. + Array that corners should be filled into. - + - Enable/disable the Rotation By Speed module. + Get the corners of the calculated rectangle in world space. + Array that corners should be filled into. - + - Apply the rotation curve between these minimum and maximum speeds. + Delegate used for the reapplyDrivenProperties event. + - + - Set the rotation by speed on each axis separately. + 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. - + - Rotation by speed curve for the X axis. + 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. - + - Rotation by speed curve for the Y axis. + Utility class containing helper methods for working with RectTransform. - + - Rotation by speed curve for the Z axis. + 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? - + - Script interface for the Rotation Over Lifetime module. + 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. - + - Enable/disable the Rotation Over Lifetime module. + Convert a given point in screen space into a pixel correct point. + + + + + Pixel adjusted point. + - + - Set the rotation over lifetime on each axis separately. + Given a rect transform, return the corner points in pixel accurate coordinates. + + + + Pixel adjusted rect. + - + - Rotation over lifetime curve for the X axis. + 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. + - + - Rotation over lifetime curve for the Y axis. + 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. + - + - Rotation over lifetime curve for the Z axis. + 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. + - + - Set the particles of this particle system. size is the number of particles that is set. + The reflection probe is used to capture the surroundings into a texture which is passed to the shaders and used for reflections. - - - + - Script interface for the Shape module. + The color with which the texture of reflection probe will be cleared. - + - Angle of the cone. + Reference to the baked texture of the reflection probe's surrounding. - + - Circle arc angle. + Distance around probe used for blending (used in deferred probes). - + - Scale of the box. + The bounding volume of the reflection probe (Read Only). - + - Enable/disable the Shape module. + Should this reflection probe use box projection? - + - Length of the cone. + The center of the box area in which reflections will be applied to the objects. Measured in the probes's local space. - + - Mesh to emit particles from. + How the reflection probe clears the background. - + - Emit particles from a single material of a mesh. + This is used to render parts of the reflecion probe's surrounding selectively. - + - MeshRenderer to emit particles from. + Reference to the baked texture of the reflection probe's surrounding. Use this to assign custom reflection texture. - + - Where on the mesh to emit particles from. + Texture which is used outside of all reflection probes (Read Only). - + - Move particles away from the surface of the source mesh. + HDR decode values of the default reflection probe texture. - + - Radius of the shape. + The far clipping plane distance when rendering the probe. - + - Randomizes the starting direction of particles. + Should this reflection probe use HDR rendering? - + - Type of shape to emit particles from. + Reflection probe importance. - + - SkinnedMeshRenderer to emit particles from. + The intensity modifier that is applied to the texture of reflection probe in the shader. - + - Modulate the particle colours with the vertex colors, or the material color if no vertex colors exist. + Should reflection probe texture be generated in the Editor (ReflectionProbeMode.Baked) or should probe use custom specified texure (ReflectionProbeMode.Custom)? - + - Emit from a single material, or the whole mesh. + The near clipping plane distance when rendering the probe. - + - Fastforwards the particle system by simulating particles over given period of time, then pauses it. + Sets the way the probe will refresh. + +See Also: ReflectionProbeRefreshMode. - Time to fastforward the particle system. - Fastforward all child particle systems as well. - Restart and start from the beginning. - + - Script interface for the Size By Speed module. + Resolution of the underlying reflection texture in pixels. - + - Enable/disable the Size By Speed module. + Shadow drawing distance when rendering the probe. - + - Apply the size curve between these minimum and maximum speeds. + The size of the box area in which reflections will be applied to the objects. Measured in the probes's local space. - + - Curve to control particle size based on speed. + Texture which is passed to the shader of the objects in the vicinity of the reflection probe (Read Only). - + - Script interface for the Size Over Lifetime module. + HDR decode values of the reflection probe texture. - + - Enable/disable the Size Over Lifetime module. + Sets this probe time-slicing mode + +See Also: ReflectionProbeTimeSlicingMode. - + - Curve to control particle size based on lifetime. + 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. + - + - Stops playing the particle system. + Checks if a probe has finished a time-sliced render. - Stop all child particle systems as well. + An integer representing the RenderID as returned by the RenderProbe method. + + + True if the render has finished, false otherwise. + + See Also: timeSlicingMode + + - + - Script interface for the Sub Emitters module. + 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 + + - + - Sub particle system to spawn on birth of the parent system's particles. + Keeps two Rigidbody2D at their relative orientations. - + - Sub particle system to spawn on birth of the parent system's particles. + The current angular offset between the Rigidbody2D that the joint connects. - + - Sub particle system to spawn on collision of the parent system's particles. + Should both the linearOffset and angularOffset be calculated automatically? - + - Sub particle system to spawn on collision of the parent system's particles. + Scales both the linear and angular forces used to correct the required relative orientation. - + - Sub particle system to spawn on death of the parent system's particles. + The current linear offset between the Rigidbody2D that the joint connects. - + - Sub particle system to spawn on death of the parent system's particles. + The maximum force that can be generated when trying to maintain the relative joint constraint. - + - Enable/disable the Sub Emitters module. + The maximum torque that can be generated when trying to maintain the relative joint constraint. - + - Script interface for the Texture Sheet Animation module. + The world-space position that is currently trying to be maintained. - + - Specifies the animation type. + Accesses remote settings (common for all game instances). - + - Specifies how many times the animation will loop during the lifetime of the particle. + Returns the value corresponding to key in the remote settings if it exists. + + - + - Enable/disable the Texture Sheet Animation module. + Returns the value corresponding to key in the remote settings if it exists. + + - + - Curve to control which frame of the texture sheet animation to play. + Returns number of keys in remote settings. - + - Defines the tiling of the texture in the X axis. + Returns the value corresponding to key in the remote settings if it exists. + + - + - Defines the tiling of the texture in the Y axis. + Returns the value corresponding to key in the remote settings if it exists. + + - + - Explicitly select which row of the texture sheet is used, when ParticleSystem.TextureSheetAnimationModule.useRandomRow is set to false. + Returns the value corresponding to key in the remote settings if it exists. + + - + - Use a random row of the texture sheet for each particle emitted. + Returns the value corresponding to key in the remote settings if it exists. + + - + - Script interface for the Velocity Over Lifetime module. + Returns all the keys in remote settings. - + - Enable/disable the Velocity Over Lifetime module. + Returns the value corresponding to key in the remote settings if it exists. + + - + - Specifies if the velocities are in local space (rotated with the transform) or world space. + Returns the value corresponding to key in the remote settings if it exists. + + - + - Curve to control particle speed based on lifetime, on the X axis. + Returns true if key exists in the remote settings. + - + - Curve to control particle speed based on lifetime, on the Y axis. + This event occurs when a new RemoteSettings is fetched and successfully parsed from the server. + - + - Curve to control particle speed based on lifetime, on the Z axis. + This event occurs when a new RemoteSettings is fetched and successfully parsed from the server. - + - The animation type. + Color or depth buffer part of a RenderTexture. - + - Animate a single row in the sheet from left to right. + 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. - + - Animate over the whole texture sheet from left to right, top to bottom. + General functionality for all renderers. - + - Whether to use 2D or 3D colliders for particle collisions. + The bounding volume of the renderer (Read Only). - + - Use 2D colliders to collide particles against. + Makes the rendered 3D object visible if enabled. - + - Use 3D colliders to collide particles against. + Has this renderer been statically batched with any other renderers? - + - Quality of world collisions. Medium and low quality are approximate and may leak particles. + Is this renderer visible in any camera? (Read Only) - + - The most accurate world collisions. + The index of the baked lightmap applied to this renderer. - + - Fastest and most approximate world collisions. + The UV scale & offset used for a lightmap. - + - Approximate world collisions. + If set, the Renderer will use the Light Probe Proxy Volume component attached to the source GameObject. - + - The type of collisions to use for a given particle system. + The light probe interpolation type. - + - Collide with a list of planes. + Matrix that transforms a point from local space into world space (Read Only). - + - Collide with the world geometry. + Returns the first instantiated Material assigned to the renderer. - + - The particle curve mode (Shuriken). + Returns all the instantiated materials of this object. - + - Use a single constant for the ParticleSystem.MinMaxCurve. + Specifies the mode for motion vector rendering. - + - Use a single curve for the ParticleSystem.MinMaxCurve. + Specifies whether this renderer has a per-object motion vector pass. - + - Use a random value between 2 constants for the ParticleSystem.MinMaxCurve. + If set, Renderer will use this Transform's position to find the light or reflection probe. - + - Use a random value between 2 curves for the ParticleSystem.MinMaxCurve. + The index of the realtime lightmap applied to this renderer. - + - The mode in which particles are emitted. + The UV scale & offset used for a realtime lightmap. - + - Emit when emitter moves. + Does this object receive shadows? - + - Emit over time. + Should reflection probes be used for this Renderer? - + - The particle gradient mode (Shuriken). + Does this object cast shadows? - + - Use a single color for the ParticleSystem.MinMaxGradient. + The shared material of this object. - + - Use a single color gradient for the ParticleSystem.MinMaxGradient. + All the shared materials of this object. - + - Use a random value between 2 colors for the ParticleSystem.MinMaxGradient. + Unique ID of the Renderer's sorting layer. - + - Use a random value between 2 color gradients for the ParticleSystem.MinMaxGradient. + Name of the Renderer's sorting layer. - + - How to apply emitter velocity to particles. + Renderer's order within a sorting layer. - + - Apply the current emitter velocity to a particle, on every frame during its lifetime. + Should light probes be used for this Renderer? - + - Apply the emitter velocity at the time the particle was born, on every frame during its lifetime. + Matrix that transforms a point from world space into local space (Read Only). - + - The mesh emission type. + 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. + - + - Emit from the edges of the mesh. + Get per-renderer material property block. + - + - Emit from the surface of the mesh. + Lets you add per-renderer material parameters without duplicating a material. + - + - Emit from the vertices of the mesh. + Extension methods to the Renderer class, used only for the UpdateGIMaterials method used by the Global Illumination System. - + - Renders particles on to the screen (Shuriken). + Schedules an update of the albedo and emissive Textures of a system that contains the Renderer. + - + - Control the direction that particles face. + Ambient lighting mode. - + - How much are the particles stretched depending on the Camera's speed. + Ambient lighting is defined by a custom cubemap. - + - How much are the particles stretched in their direction of motion. + Flat ambient lighting. - + - Clamp the maximum particle size. + Skybox-based or custom ambient lighting. - + - Mesh used as particle instead of billboarded texture. + Trilight ambient lighting. - + - Clamp the minimum particle size. + Blend mode for controlling the blending. - + - How much are billboard particle normals oriented towards the camera. + Blend factor is (Ad, Ad, Ad, Ad). - + - Modify the pivot point used for rotating particles. + Blend factor is (Rd, Gd, Bd, Ad). - + - How particles are drawn. + Blend factor is (1, 1, 1, 1). - + - Biases particle system sorting amongst other transparencies. + Blend factor is (1 - Ad, 1 - Ad, 1 - Ad, 1 - Ad). - + - Sort particles within a system. + Blend factor is (1 - Rd, 1 - Gd, 1 - Bd, 1 - Ad). - + - How much are the particles stretched depending on "how fast they move". + Blend factor is (1 - As, 1 - As, 1 - As, 1 - As). - + - The rendering mode for particle systems (Shuriken). + Blend factor is (1 - Rs, 1 - Gs, 1 - Bs, 1 - As). - + - Render particles as billboards facing the player. (Default) + Blend factor is (As, As, As, As). - + - Render particles as billboards always facing up along the y-Axis. + Blend factor is (f, f, f, 1); where f = min(As, 1 - Ad). - + - Render particles as meshes. + Blend factor is (Rs, Gs, Bs, As). - + - Stretch particles in the direction of motion. + Blend factor is (0, 0, 0, 0). - + - Render particles as billboards always facing the player, but not pitching along the x-Axis. + Blend operation. - + - How particles are aligned when rendered. + Add (s + d). - + - Particles align with their local transform. + Color burn (Advanced OpenGL blending). - + - Particles face the camera. + Color dodge (Advanced OpenGL blending). - + - Particles align with the world. + Darken (Advanced OpenGL blending). - + - Control how particle systems apply transform scale. + Difference (Advanced OpenGL blending). - + - Scale the particle system using the entire transform hierarchy. + Exclusion (Advanced OpenGL blending). - + - Scale the particle system using only its own transform scale. (Ignores parent scale). + Hard light (Advanced OpenGL blending). - + - Only apply transform scale to the shape component, which cotnrols where particles are spawned, but does not affect their size or movement. + HSL color (Advanced OpenGL blending). - + - The emission shape (Shuriken). + HSL Hue (Advanced OpenGL blending). - + - Emit from the volume of a box. + HSL luminosity (Advanced OpenGL blending). - + - Emit from a circle. + HSL saturation (Advanced OpenGL blending). - + - Emit from the edge of a circle. + Lighten (Advanced OpenGL blending). - + - Emit from the base surface of a cone. + Logical AND (s & d) (D3D11.1 only). - + - Emit from the base surface of a cone. + Logical inverted AND (!s & d) (D3D11.1 only). - + - Emit from the volume of a cone. + Logical reverse AND (s & !d) (D3D11.1 only). - + - Emit from the surface of a cone. + Logical Clear (0). - + - Emit from the volume of a half-sphere. + Logical Copy (s) (D3D11.1 only). - + - Emit from the surface of a half-sphere. + Logical inverted Copy (!s) (D3D11.1 only). - + - Emit from a mesh. + Logical Equivalence !(s XOR d) (D3D11.1 only). - + - Emit from a mesh renderer. + Logical Inverse (!d) (D3D11.1 only). - + - Emit from an edge. + Logical NAND !(s & d). D3D11.1 only. - + - Emit from a skinned mesh renderer. + Logical No-op (d) (D3D11.1 only). - + - Emit from the volume of a sphere. + Logical NOR !(s | d) (D3D11.1 only). - + - Emit from the surface of a sphere. + Logical OR (s | d) (D3D11.1 only). - + - The space to simulate particles in. + Logical inverted OR (!s | d) (D3D11.1 only). - + - Simulate particles in local space. + Logical reverse OR (s | !d) (D3D11.1 only). - + - Simulate particles in world space. + Logical SET (1) (D3D11.1 only). - + - The sorting mode for particle systems. + Logical XOR (s XOR d) (D3D11.1 only). - + - Sort based on distance. + Max. - + - No sorting. + Min. - + - Sort the oldest particles to the front. + Multiply (Advanced OpenGL blending). - + - Sort the youngest particles to the front. + Overlay (Advanced OpenGL blending). - + - Physics material describes how to handle colliding objects (friction, bounciness). + Reverse subtract. - + - Determines how the bounciness is combined. + Screen (Advanced OpenGL blending). - + - How bouncy is the surface? A value of 0 will not bounce. A value of 1 will bounce without any loss of energy. + Soft light (Advanced OpenGL blending). - + - The friction used when already moving. This value has to be between 0 and 1. + Subtract. - + - If anisotropic friction is enabled, dynamicFriction2 will be applied along frictionDirection2. + Built-in temporary render textures produced during camera's rendering. - + - Determines how the friction is combined. + Target texture of currently rendering camera. - + - The direction of anisotropy. Anisotropic friction is enabled if the vector is not zero. + Currently active render target. - + - The friction coefficient used when an object is lying on a surface. + Camera's depth texture. - + - If anisotropic friction is enabled, staticFriction2 will be applied along frictionDirection2. + Camera's depth+normals texture. - + - Creates a new material. + Deferred shading G-buffer #0 (typically diffuse color). - + - Creates a new material named name. + Deferred shading G-buffer #1 (typically specular + roughness). - - + - Describes how physic materials of colliding objects are combined. + Deferred shading G-buffer #2 (typically normals). - + - Averages the friction/bounce of the two colliding materials. + Deferred shading G-buffer #3 (typically emission/lighting). - + - Uses the larger friction/bounce of the two colliding materials. + Deferred shading G-buffer #4 (typically occlusion mask for static lights if any). - + - Uses the smaller friction/bounce of the two colliding materials. + G-buffer #5 Available. - + - Multiplies the friction/bounce of the two colliding materials. + G-buffer #6 Available. - + - Global physics properties and helper methods. + G-buffer #7 Available. - + - Two colliding objects with a relative velocity below this will not bounce (default 2). Must be positive. + Motion Vectors generated when the camera has motion vectors enabled. - + - The default contact offset of the newly created colliders. + Deferred lighting light buffer. - + - The gravity applied to all rigid bodies in the scene. + Deferred lighting HDR specular light buffer (Xbox 360 only). - + - The default maximum angular velocity permitted for any rigid bodies (default 7). Must be positive. + Deferred lighting (normals+specular) G-buffer. - + - The minimum contact penetration value in order to apply a penalty force (default 0.05). Must be positive. + Reflections gathered from default reflection and reflections probes. - + - Specifies whether queries (raycasts, spherecasts, overlap tests, etc.) hit Triggers by default. + Resolved depth buffer from deferred. - + - The default angular velocity, below which objects start sleeping (default 0.14). Must be positive. + Built-in shader modes used by Rendering.GraphicsSettings. - + - The mass-normalized energy threshold, below which objects start going to sleep. + Don't use any shader, effectively disabling the functionality. - + - The default linear velocity, below which objects start going to sleep (default 0.15). Must be positive. + Use built-in shader (default). - + - The default solver iteration count permitted for any rigid bodies (default 7). Must be positive. + Use custom shader instead of built-in one. - + - Layer mask constant to select all layers. + Built-in shader types used by Rendering.GraphicsSettings. - + - Casts the box along a ray and returns detailed information on what was hit. + Shader used for deferred reflection probes. - 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. + Shader used for deferred shading calculations. - 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. + Shader used for depth and normals texture when enabled on a Camera. - 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. + Shader used for legacy deferred lighting calculations. - 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. + Default shader used for lens flares. - 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. - - + - Casts a capsule against all colliders in the scene and returns detailed information on what was hit. + Default shader used for light halos. - 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. - - + - Casts a capsule against all colliders in the scene and returns detailed information on what was hit. + Shader used for Motion Vectors when enabled on a Camera. - 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. - - + - Casts a capsule against all colliders in the scene and returns detailed information on what was hit. + Shader used for screen-space cascaded shadows. - 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. - - + - + Defines a place in camera's rendering to attach Rendering.CommandBuffer objects to. - 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. - + - + After camera's depth+normals texture is generated. - 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. - + - + After camera's depth texture is generated. - 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. - + - + After camera has done rendering everything. - 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. + After final geometry pass in deferred lighting. - 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. - - + - Like Physics.CapsuleCast, but this function will return all hits the capsule sweep intersects. + After transparent objects in forward rendering. - 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. - - + - Like Physics.CapsuleCast, but this function will return all hits the capsule sweep intersects. + After opaque objects in forward rendering. - 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. - - + - Like Physics.CapsuleCast, but this function will return all hits the capsule sweep intersects. + After deferred rendering G-buffer is rendered. - 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. + After image effects. - 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. + After image effects that happen between opaque & transparent objects. - 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. + After lighting pass in deferred rendering. - 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. - + - Checks if any colliders overlap a capsule-shaped volume in world space. + After reflections pass in deferred rendering. - 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. - + - Checks if any colliders overlap a capsule-shaped volume in world space. + After skybox is drawn. - 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. + Before camera's depth+normals texture is generated. - 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 true if there are any colliders overlapping the sphere defined by position and radius in world coordinates. + Before camera's depth texture is generated. - 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 true if there are any colliders overlapping the sphere defined by position and radius in world coordinates. + Before final geometry pass in deferred lighting. - 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. - + - Layer mask constant to select default raycast layers. + Before transparent objects in forward rendering. - + - Are collisions between layer1 and layer2 being ignored? + Before opaque objects in forward rendering. - - - + - Makes the collision detection system ignore all collisions between collider1 and collider2. + Before deferred rendering G-buffer is rendered. - - - - + - Makes the collision detection system ignore all collisions between collider1 and collider2. + Before image effects. - - - - + - 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. + Before image effects that happen between opaque & transparent objects. - - - - + - 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. + Before lighting pass in deferred rendering. - - - - + - Layer mask constant to select ignore raycast layer. + Before reflections pass in deferred rendering. - + - Returns true if there is any collider intersecting the line between start and end. + Before skybox is drawn. - 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. + The HDR mode to use for rendering. - 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. + Uses RenderTextureFormat.ARGBHalf. - 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. + Uses RenderTextureFormat.RGB111110Float. - 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). - + - Returns true if there is any collider intersecting the line between start and end. + Specifies which color components will get written into the target framebuffer. - 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). - + - Returns true if there is any collider intersecting the line between start and end. + Write all components (R, G, B and Alpha). - 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. + Write alpha component. - 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. + Write blue component. - 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. - - + - Returns an array with all colliders touching or inside the sphere. + Write green component. - 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. - + - Returns an array with all colliders touching or inside the sphere. + Write red component. - 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. - + - Returns an array with all colliders touching or inside the sphere. + List of graphics commands to execute. - 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. + Name of this command 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 against all colliders in the scene. + Size of this command buffer in bytes (Read Only). - 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. - - True when the ray intersects any collider, otherwise false. - - + - Casts a ray against all colliders in the scene. + Adds a command to begin profile sampling. - 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. - - True when the ray intersects any collider, otherwise false. - + Name of the profile information used for sampling. - + - Casts a ray against all colliders in the scene. + Add a "blit into a render texture" command. - 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. - - True when the ray intersects any collider, otherwise false. - + 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"). - + - Casts a ray against all colliders in the scene. + Add a "blit into a render texture" command. - 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. - - True when the ray intersects any collider, otherwise false. - + 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"). - + - Casts a ray against all colliders in the scene and returns detailed information on what was hit. + Add a "blit into a render texture" command. - 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 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. - - True when the ray intersects any collider, otherwise false. - + 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"). - + - Casts a ray against all colliders in the scene and returns detailed information on what was hit. + Add a "blit into a render texture" command. - 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 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. - - True when the ray intersects any collider, otherwise false. - + 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"). - + - Casts a ray against all colliders in the scene and returns detailed information on what was hit. + Add a "blit into a render texture" command. - 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 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. - - True when the ray intersects any collider, otherwise false. - + 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"). - + - Casts a ray against all colliders in the scene and returns detailed information on what was hit. + Add a "blit into a render texture" command. - 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 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. - - True when the ray intersects any collider, otherwise false. - + 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"). - + - Same as above using ray.origin and ray.direction instead of origin and direction. + Clear all commands in the buffer. - 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. - - True when the ray intersects any collider, otherwise false. - - + - Same as above using ray.origin and ray.direction instead of origin and direction. + Adds a "clear render target" command. - 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. - - True when the ray intersects any collider, otherwise false. - + Should clear depth buffer? + Should clear color buffer? + Color to clear with. + Depth to clear with (default is 1.0). - + - Same as above using ray.origin and ray.direction instead of origin and direction. + Adds a command to copy ComputeBuffer counter value. - 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. - - True when the ray intersects any collider, otherwise false. - + 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). - + - Same as above using ray.origin and ray.direction instead of origin and direction. + Create a new empty command buffer. - 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. - - True when the ray intersects any collider, otherwise false. - - + - Same as above using ray.origin and ray.direction instead of origin and direction. + Adds a command to disable global shader keyword. - 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 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. - - True when the ray intersects any collider, otherwise false. - + Shader keyword to disable. - + - Same as above using ray.origin and ray.direction instead of origin and direction. + Add a command to execute a ComputeShader. - 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 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. - - True when the ray intersects any collider, otherwise false. - + 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. - + - Same as above using ray.origin and ray.direction instead of origin and direction. + Add a command to execute a ComputeShader. - 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 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. - - True when the ray intersects any collider, otherwise false. - + 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. - + - Same as above using ray.origin and ray.direction instead of origin and direction. + Add a "draw mesh" command. - 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 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. - - True when the ray intersects any collider, otherwise false. - + 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. - + - Casts a ray through the scene and returns all hits. Note that order is not guaranteed. + 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 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. + 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. - + - Casts a ray through the scene and returns all hits. Note that order is not guaranteed. + Add a "draw mesh with indirect instancing" command. - 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. + 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. - + - Casts a ray through the scene and returns all hits. Note that order is not guaranteed. + Add a "draw procedural geometry" command. - 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. + 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. - + - Casts a ray through the scene and returns all hits. Note that order is not guaranteed. + Add a "draw procedural geometry" command. - 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. + 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. - + - See Also: Raycast. + Add a "draw renderer" command. - 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. + 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). - + - See Also: Raycast. + Adds a command to enable global shader keyword. - 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. + Shader keyword to enable. - + - See Also: Raycast. + Adds a command to begin profile sampling. - 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. + Name of the profile information used for sampling. - + - See Also: Raycast. + Add a "get a temporary render texture" command. - 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. + 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). - + - Cast a ray through the scene and store the hits into the buffer. + Send a user-defined event to a native code plugin. - 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. - + Native code callback to queue for Unity's renderer to invoke. + User defined id to send to the callback. - + - Cast a ray through the scene and store the hits into the buffer. + Add a "release a temporary render texture" command. - 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. - + Shader property name for this texture. - + - Casts a sphere along a ray and returns detailed information on what was hit. + Adds a command to set an input or output buffer parameter on a ComputeShader. - 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. - + ComputeShader to set parameter for. + Which kernel the buffer is being set for. See ComputeShader.FindKernel. + Name of the buffer variable in shader code. + Buffer to set. - + - Casts a sphere along a ray and returns detailed information on what was hit. + Adds a command to set a float parameter on a ComputeShader. - 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. - + ComputeShader to set parameter for. + Name of the variable in shader code. + Value to set. - + - Casts a sphere along a ray and returns detailed information on what was hit. + Adds a command to set multiple consecutive float parameters on a ComputeShader. - 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. - + ComputeShader to set parameter for. + Name of the variable in shader code. + Values to set. - + - Casts a sphere along a ray and returns detailed information on what was hit. + Adds a command to set an integer parameter on a ComputeShader. - 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. - + ComputeShader to set parameter for. + Name of the variable in shader code. + Value to set. - + - Casts a sphere along a ray and returns detailed information on what was hit. + Adds a command to set multiple consecutive integer parameters on a ComputeShader. - 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. - + ComputeShader to set parameter for. + Name of the variable in shader code. + Values to set. - + - Casts a sphere along a ray and returns detailed information on what was hit. + Adds a command to set a texture parameter on a ComputeShader. - 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. - + ComputeShader to set parameter for. + Which kernel the texture is being set for. See ComputeShader.FindKernel. + Name of the texture variable in shader code. + Texture value or identifier to set, see RenderTargetIdentifier. - + - Casts a sphere along a ray and returns detailed information on what was hit. + Adds a command to set a vector parameter on a ComputeShader. - 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. - + ComputeShader to set parameter for. + Name of the variable in shader code. + Value to set. - + - Casts a sphere along a ray and returns detailed information on what was hit. + Add a "set global shader buffer property" command. - 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. - + + + - + - + Add a "set global shader buffer property" command. - 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. + + + - + - + Add a "set global shader color property" command. - 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. + + + - + - + Add a "set global shader color property" command. - 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. + + + - + - + Add a command to set global depth bias. - 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. + Constant depth bias. + Slope-dependent depth bias. - + - Like Physics.SphereCast, but this function will return all hits the sphere sweep intersects. + Add a "set global shader float property" command. - 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. + Add a "set global shader float property" command. - 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. + Add a "set global shader float array property" command. - 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. + Add a "set global shader float array property" command. - 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. + Add a "set global shader float array property" command. - 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. + + + - + - Like Physics.SphereCast, but this function will return all hits the sphere sweep intersects. + Add a "set global shader float array property" command. - 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. + + + - + - Like Physics.SphereCast, but this function will return all hits the sphere sweep intersects. + Add a "set global shader matrix property" command. - 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. + + + - + - Like Physics.SphereCast, but this function will return all hits the sphere sweep intersects. + Add a "set global shader matrix property" command. - 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. + Add a "set global shader matrix array property" command. - 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. + Add a "set global shader matrix array property" command. - 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. - + + + - + - Global settings and helpers for 2D physics. + Add a "set global shader matrix array property" command. + + + - + - A rigid-body cannot sleep if its angular velocity is above this tolerance. + Add a "set global shader matrix array property" command. + + + - + - The scale factor that controls how fast overlaps are resolved. + Add a "set global shader texture property" command, referencing a RenderTexture. + + + + + + + + Add a "set global shader texture property" command, referencing a RenderTexture. + + + - + - The scale factor that controls how fast TOI overlaps are resolved. + Add a "set global shader vector property" command. + + + - + - Whether or not to stop reporting collision callbacks immediately if any of the objects involved in the collision are deleted/moved. + Add a "set global shader vector property" command. + + + - + - Whether to stop processing collision callbacks if any of the objects involved in the collision are deleted or not. + Add a "set global shader vector array property" command. + + + - + - Acceleration due to gravity. + Add a "set global shader vector array property" command. + + + - + - A rigid-body cannot sleep if its linear velocity is above this tolerance. + Add a "set global shader vector array property" command. + + + - + - The maximum angular position correction used when solving constraints. This helps to prevent overshoot. + Add a "set global shader vector array property" command. + + + - + - The maximum linear position correction used when solving constraints. This helps to prevent overshoot. + Add a command to set the projection matrix. + Projection (camera to clip space) matrix. - + - The maximum angular speed of a rigid-body per physics update. Increasing this can cause numerical problems. + 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. - + - The maximum linear speed of a rigid-body per physics update. Increasing this can cause numerical problems. + 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. - + - The minimum contact penetration radius allowed before any separation impulse force is applied. Extreme caution should be used when modifying this value as making this smaller means that polygons will have an insufficient buffer for continuous collision and making it larger may create artefacts for vertex collision. + 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. - + - The number of iterations of the physics solver when considering objects' positions. + 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. - + - Do raycasts detect Colliders configured as triggers? + 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. - + - Do ray/line casts that start inside a collider(s) detect those collider(s)? + 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. - + - Do raycasts detect Colliders configured as triggers? + 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. - + - Do ray/line casts that start inside a collider(s) detect those collider(s)? + 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. - + - The time in seconds that a rigid-body must be still before it will go to sleep. + 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. - + - The number of iterations of the physics solver when considering objects' velocities. + Add a "set shadow sampling mode" command. + Shadowmap render target to change the sampling mode on. + New sampling mode. - + - Any collisions with a relative linear velocity below this threshold will be treated as inelastic. + Add a command to set the view matrix. + View (world to camera space) matrix. - + - Layer mask constant that includes all layers. + Add a command to set the rendering viewport. + Viewport rectangle in pixel coordinates. - + - Casts a box against colliders in the scene, returning the first collider to contact with it. + Add a command to set the view and projection matrices. - The point in 2D space where the shape originates. - The size of the shape. - The angle of the shape (in degrees). - Vector representing the direction of the shape. - Maximum distance over which to cast the shape. - 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. - + View (world to camera space) matrix. + Projection (camera to clip space) matrix. - + - Casts a box against colliders in the scene, returning all colliders that contact with it. + Depth or stencil comparison function. - The point in 2D space where the shape originates. - The size of the shape. - The angle of the shape (in degrees). - Vector representing the direction of the shape. - Maximum distance over which to cast the shape. - 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 box into the scene, returning colliders that contact with it into the provided results array. + Always pass depth or stencil test. - The point in 2D space where the shape originates. - The size of the shape. - The angle of the shape (in degrees). - Vector representing the direction of the shape. - Array to receive results. - Maximum distance over which to cast the shape. - 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 number of results returned. - - + - Casts a circle against colliders in the scene, returning the first collider to contact with it. + Depth or stencil test is disabled. - The point in 2D space where the shape originates. - The radius of the shape. - Vector representing the direction of the shape. - Maximum distance over which to cast the shape. - 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 circle against colliders in the scene, returning all colliders that contact with it. + Pass depth or stencil test when values are equal. - The point in 2D space where the shape originates. - The radius of the shape. - Vector representing the direction of the shape. - Maximum distance over which to cast the shape. - 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 circle into the scene, returning colliders that contact with it into the provided results array. + Pass depth or stencil test when new value is greater than old one. - The point in 2D space where the shape originates. - The radius of the shape. - Vector representing the direction of the shape. - Array to receive results. - Maximum distance over which to cast the shape. - 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 number of results returned. - - + - Layer mask constant that includes all layers participating in raycasts by default. + Pass depth or stencil test when new value is greater or equal than old one. - + - Checks whether the collision detection system will ignore all collisionstriggers between collider1 and collider2/ or not. + Pass depth or stencil test when new value is less than old one. - The first collider to compare to collider2. - The second collider to compare to collider1. - + - Should collisions between the specified layers be ignored? + Pass depth or stencil test when new value is less or equal than old one. - ID of first layer. - ID of second layer. - + - Cast a 3D ray against the colliders in the scene returning the first collider along the ray. + Never pass depth or stencil test. - 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. + Pass depth or stencil test when values are different. - 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. + Support for various Graphics.CopyTexture cases. - 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/. + Basic Graphics.CopyTexture support. - 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. + Support for Texture3D in Graphics.CopyTexture. - 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. + Support for Graphics.CopyTexture between different texture types. - + - Check whether collider1 is touching collider2 or not. + No support for Graphics.CopyTexture. - 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 collider is touching any colliders on the specified layerMask or not. + Support for RenderTexture to Texture copies in Graphics.CopyTexture. - 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 against colliders in the scene. + Support for Texture to RenderTexture copies in Graphics.CopyTexture. - 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 this value. - Only include objects with a Z coordinate (depth) less than this value. - - The cast results returned. - - + - Casts a line against colliders in the scene. + Backface culling mode. - 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 this value. - Only include objects with a Z coordinate (depth) less than this value. - - The cast results returned. - - + - Casts a line against colliders in the scene. + Cull back-facing geometry. - 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 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. - - The number of results returned. - - + - Check if a collider falls within a rectangular area. + Cull front-facing geometry. - One corner of the rectangle. - Diagonally opposite corner of the rectangle. - 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. - + - Get a list of all colliders that fall within a rectangular area. + Disable culling. - One corner of the rectangle. - Diagonally opposite corner of the rectangle. - 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. - + - Get a list of all colliders that fall within a specified area. + Default reflection mode. - One corner of the rectangle. - Diagonally opposite 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 this value. - Only include objects with a Z coordinate (depth) less than this value. - - The number of results returned. - - + - Check if a collider falls within a circular area. + Custom default reflection. - 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 this value. - Only include objects with a Z coordinate (depth) less than this value. - + - Get a list of all colliders that fall within a circular area. + Skybox-based default reflection. - Only include objects with a Z coordinate (depth) greater than this value. - Only include objects with a Z coordinate (depth) less than this value. - Center of the circle. - Radius of the circle. - Filter to check objects only on specified layers. - + - Get a list of all colliders that fall within a circular area. + Graphics device API type. - Only include objects with a Z coordinate (depth) greater than this value. - Only include objects with a Z coordinate (depth) less than this value. - Center of the circle. - Radius of the circle. - Array to receive results. - Filter to check objects only on specific layers. - - The number of results returned. - - + - Check if a collider overlaps a point in space. + Direct3D 11 graphics API. - A point in world space. - 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. - + - Get a list of all colliders that overlap a point in space. + Direct3D 12 graphics API. - Only include objects with a Z coordinate (depth) greater than this value. - Only include objects with a Z coordinate (depth) less than this value. - A point in space. - Filter to check objects only on specific layers. - + - Get a list of all colliders that overlap a point in space. + Direct3D 9 graphics API. - Only include objects with a Z coordinate (depth) greater than this value. - Only include objects with a Z coordinate (depth) less than this value. - A point in space. - Array to receive results. - Filter to check objects only on specific layers. - - The number of results returned. - - + - Casts a ray against colliders in the scene. + iOS Metal graphics API. - The point in 2D space where the ray originates. - 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 this value. - Only include objects with a Z coordinate (depth) less than this value. - - The cast results returned. - - + - Casts a ray against colliders in the scene, returning all colliders that contact with it. + Nintendo 3DS graphics API. - The point in 2D space where the ray originates. - 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 this value. - Only include objects with a Z coordinate (depth) less than this value. - - The cast results returned. - - + - Casts a ray into the scene. + No graphics API. - 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 point in 2D space where the ray originates. - 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. - - The number of results returned. - - + - Asset type that defines the surface properties of a Collider2D. + OpenGL 2.x graphics API. (deprecated, only available on Linux and MacOSX) - + - The degree of elasticity during collisions. + OpenGL (Core profile - GL3 or later) graphics API. - + - Coefficient of friction. + OpenGL ES 2.0 graphics API. - + - A base type for 2D physics components that required a callback during FixedUpdate. + OpenGL ES 3.0 graphics API. - + - Ping any given IP address (given in dot notation). + PlayStation 3 graphics API. - + - The IP target of the ping. + PlayStation 4 graphics API. - + - Has the ping function completed? + PlayStation Mobile (PSM) graphics API. - + - This property contains the ping time result after isDone returns true. + PlayStation Vita graphics API. - + - Perform a ping to the supplied target IP address. + Vulkan (EXPERIMENTAL). - - + - Representation of a plane in 3D space. + Xbox One graphics API. - + - Distance from the origin to the plane. + Script interface for. - + - Normal vector of the plane. + Whether to use a Light's color temperature when calculating the final color of that Light." - + - Creates a plane. + If this is true, Light intensity is multiplied against linear color values. If it is false, gamma color values are used. - - - + - Creates a plane. + The RenderPipelineAsset that describes how the Scene should be rendered. - - - + - Creates a plane. + An axis that describes the direction along which the distances of objects are measured for the purpose of sorting. - - - - + - Returns a signed distance from plane to point. + Transparent object sorting mode. - - + - Is a point on the positive side of the plane? + Get custom shader used instead of a built-in shader. - + Built-in shader type to query custom shader for. + + The shader used. + - + - Intersects a ray with the plane. + Get built-in shader mode. - - + Built-in shader type to query. + + Mode used for built-in shader. + - + - Are two points on the same side of the plane? + Set custom shader to use instead of a built-in shader. - - + Built-in shader type to set custom shader to. + The shader to use. - + - 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. + Set built-in shader mode. - First point in clockwise order. - Second point in clockwise order. - Third point in clockwise order. + Built-in shader type to change. + Mode to use for built-in shader. - + - Sets a plane using a point that lies within it along with a normal to orient it. + Graphics Tier. +See Also: Graphics.activeTier. - The plane's normal vector. - A point that lies on the plane. - + - Applies "platform" behaviour such as one-way collisions etc. + The first graphics tier (Low) - corresponds to shader define UNITY_HARDWARE_TIER1. - + - Whether to use one-way collision behaviour or not. + The second graphics tier (Medium) - corresponds to shader define UNITY_HARDWARE_TIER2. - + - The angle variance centered on the sides of the platform. Zero angle only matches sides 90-degree to the platform "top". + The third graphics tier (High) - corresponds to shader define UNITY_HARDWARE_TIER3. - + - 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. + Defines a place in light's rendering to attach Rendering.CommandBuffer objects to. - + - Whether bounce should be used on the platform sides or not. + After directional light screenspace shadow mask is computed. - + - Whether friction should be used on the platform sides or not. + After shadowmap is rendered. - + - The angle of an arc that defines the surface of the platform centered of the local 'up' of the effector. + After shadowmap pass is rendered. - + - Should the one-way collision behaviour be used? + Before directional light screenspace shadow mask is computed. - + - Ensures that all contacts controlled by the one-way behaviour act the same. + Before shadowmap is rendered. - + - Should bounce be used on the platform sides? + Before shadowmap pass is rendered. - + - Should friction be used on the platform sides? + Light probe interpolation type. - + - Stores and accesses player preferences between game sessions. + Simple light probe interpolation is used. - + - Removes all keys and values from the preferences. Use with caution. + Light Probes are not used. - + - Removes key and its corresponding value from the preferences. + Uses a 3D grid of interpolated light probes. - - + - Returns the value corresponding to key in the preference file if it exists. + Shadow resolution options for a Light. - - - + - Returns the value corresponding to key in the preference file if it exists. + Use resolution from QualitySettings (default). - - - + - Returns the value corresponding to key in the preference file if it exists. + High shadow map resolution. - - - + - Returns the value corresponding to key in the preference file if it exists. + Low shadow map resolution. - - - + - Returns the value corresponding to key in the preference file if it exists. + Medium shadow map resolution. - - - + - Returns the value corresponding to key in the preference file if it exists. + Very high shadow map resolution. - - - + - Returns true if key exists in the preferences. + Opaque object sorting mode of a Camera. - - + - Writes all modified preferences to disk. + Default opaque sorting mode. - + - Sets the value of the preference identified by key. + Do rough front-to-back sorting of opaque objects. - - - + - Sets the value of the preference identified by key. + Do not sort opaque objects by distance. - - - + - Sets the value of the preference identified by key. + Shader pass type for Unity's lighting pipeline. - - - + - An exception thrown by the PlayerPrefs class in a web player build. + Deferred Shading shader pass. - + - Used by Animation.Play function. + Forward rendering additive pixel light pass. - + - Will stop all animations that were started with this component before playing. + Forward rendering base pass. - + - Will stop all animations that were started in the same layer. This is the default when playing animations. + Legacy deferred lighting (light pre-pass) base pass. - + - Applies forces to attract/repulse against a point. + Legacy deferred lighting (light pre-pass) final pass. - + - The angular drag to apply to rigid-bodies. + Shader pass used to generate the albedo and emissive values used as input to lightmapping. - + - The scale applied to the calculated distance between source and target. + Motion vector render pass. - + - The linear drag to apply to rigid-bodies. + Regular shader pass that does not interact with lighting. - + - The magnitude of the force to be applied. + Shadow caster & depth texure shader pass. - + - The mode used to apply the effector force. + Legacy vertex-lit shader pass. - + - The source which is used to calculate the centroid point of the effector. The distance from the target is defined from this point. + Legacy vertex-lit shader pass, with mobile lightmaps. - + - The target for where the effector applies any force. + Legacy vertex-lit shader pass, with desktop (RGBM) lightmaps. - + - The variation of the magnitude of the force to be applied. + How much CPU usage to assign to the final lighting calculations at runtime. - + - Collider for 2D physics representing an arbitrary polygon defined by its vertices. + 75% of the allowed CPU threads are used as worker threads. - + - The number of paths in the polygon. + 25% of the allowed CPU threads are used as worker threads. - + - Corner points that define the collider's shape in local space. + 50% of the allowed CPU threads are used as worker threads. - + - Creates as regular primitive polygon with the specified number of sides. + 100% of the allowed CPU threads are used as worker threads. - 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. - + - Get a path from the polygon by its index. + Determines how Unity will compress baked reflection cubemap. - The index of the path to retrieve. - + - Return the total number of points in the polygon in all paths. + Baked Reflection cubemap will be compressed if compression format is suitable. - + - Define a path by its constituent points. + Baked Reflection cubemap will be compressed. - Index of the path to set. - Points that define the path. - + - The various primitives that can be created using the GameObject.CreatePrimitive function. + Baked Reflection cubemap will be left uncompressed. - + - A capsule primitive. + ReflectionProbeBlendInfo contains information required for blending probes. - + - A cube primitive. + Reflection Probe used in blending. - + - A cylinder primitive. + Specifies the weight used in the interpolation between two probes, value varies from 0.0 to 1.0. - + - A plane primitive. + Values for ReflectionProbe.clearFlags, determining what to clear when rendering a ReflectionProbe. - + - A Quad primitive. + Clear with the skybox. - + - A sphere primitive. + Clear with a background color. - + - Substance memory budget. + Reflection probe's update mode. - + - A limit of 512MB for the cache or the working memory. + Reflection probe is baked in the Editor. - + - A limit of 256MB for the cache or the working memory. + Reflection probe uses a custom texture specified by the user. - + - No limit for the cache or the working memory. + Reflection probe is updating in realtime. - + - A limit of 1B (one byte) for the cache or the working memory. + An enum describing the way a realtime reflection probe refreshes in the Player. - + - A limit of 128MB for the cache or the working memory. + 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. - + - ProceduralMaterial loading behavior. + 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. - + - Bake the textures to speed up loading and discard the ProceduralMaterial data (default on unsupported platform). + 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. - + - Bake the textures to speed up loading and keep the ProceduralMaterial data so that it can still be tweaked and regenerated later on. + 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. - + - Generate the textures when loading and cache them to diskflash to speed up subsequent gameapplication startups. + 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. - + - Do not generate the textures. RebuildTextures() or RebuildTexturesImmediately() must be called to generate the textures. + 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. - + - Do not generate the textures. RebuildTextures() or RebuildTexturesImmediately() must be called to generate the textures. After the textures have been generrated for the first time, they are cached to diskflash to speed up subsequent gameapplication startups. + Unity will render the probe entirely in one frame. - + - Generate the textures when loading to favor application's size (default on supported platform). + Reflection Probe usage. - + - Class for ProceduralMaterial handling. + 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. - + - Set or get the update rate in millisecond of the animated substance. + Reflection probes are enabled. Blending occurs between probes or probes and default reflection, useful for outdoor environments. - + - Set or get the Procedural cache budget. + Reflection probes are disabled, skybox will be used for reflection. - + - Indicates whether cached data is available for this ProceduralMaterial's textures (only relevant for Cache and DoNothingAndCache loading behaviors). + Reflection probes are enabled, but no blending will occur between probes when there are two overlapping volumes. - + - Returns true if FreezeAndReleaseSourceData was called on this ProceduralMaterial. + Handling of loading RenderBuffer contents on setting as active RenderTarget. - + - Should the ProceduralMaterial be generated at load time? + RenderBuffer will try to skip loading its contents on setting as Render Target. - + - Check if the ProceduralTextures from this ProceduralMaterial are currently being rebuilt. + Make RenderBuffer to Load its contents when setting as RenderTarget. - + - Set or get the "Readable" flag for a ProceduralMaterial. + Handling of storing RenderBuffer contents after it was an active RenderTarget and another RenderTarget was set. - + - Check if ProceduralMaterials are supported on the current platform. + RenderBuffer will try to skip storing its contents. - + - Get ProceduralMaterial loading behavior. + Make RenderBuffer to Store its contents. - + - Set or get an XML string of "input/value" pairs (setting the preset rebuilds the textures). + Determine in which order objects are renderered. - + - Used to specify the Substance engine CPU usage. + Alpha tested geometry uses this queue. - + - Specifies if a named ProceduralProperty should be cached for efficient runtime tweaking. + This render queue is rendered before any others. - - - + - Clear the Procedural cache. + Opaque geometry uses this queue. - + - Render a ProceduralMaterial immutable and release the underlying data to decrease the memory footprint. + Last render queue that is considered "opaque". - + - This allows to get a reference to a ProceduralTexture generated by a ProceduralMaterial using its name. + This render queue is meant for overlay effects. - The name of the ProceduralTexture to get. - + - Get generated textures. + This render queue is rendered after Geometry and AlphaTest, in back-to-front order. - + - Get a named Procedural boolean property. + Identifies a RenderTexture for a Rendering.CommandBuffer. - - + - Get a named Procedural color property. + 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. - + - Get a named Procedural enum property. + 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. - + - Get a named Procedural float property. + 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. - + - Get an array of descriptions of all the ProceduralProperties this ProceduralMaterial has. + 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. - + - Get a named Procedural texture property. + How shadows are cast from this object. - - + - Get a named Procedural vector property. + No shadows are cast from this object. - - + - Checks if the ProceduralMaterial has a ProceduralProperty of a given name. + Shadows are cast from this object. - - + - Checks if a named ProceduralProperty is cached for efficient runtime tweaking. + Object casts shadows, but is otherwise invisible in the scene. - - + - Checks if a given ProceduralProperty is visible according to the values of this ProceduralMaterial's other ProceduralProperties and to the ProceduralProperty's visibleIf expression. + Shadows are cast from this object, treating it as two-sided. - The name of the ProceduralProperty whose visibility is evaluated. - + - Triggers an asynchronous rebuild of this ProceduralMaterial's dirty textures. + Allows precise control over which shadow map passes to execute Rendering.CommandBuffer objects attached using Light.AddCommandBuffer. - + - Triggers an immediate (synchronous) rebuild of this ProceduralMaterial's dirty textures. + All shadow map passes. - + - Set a named Procedural boolean property. + All directional shadow map passes. - - - + - Set a named Procedural color property. + First directional shadow map cascade. - - - + - Set a named Procedural enum property. + Second directional shadow map cascade. - - - + - Set a named Procedural float property. + Third directional shadow map cascade. - - - + - Set a named Procedural texture property. + Fourth directional shadow map cascade. - - - + - Set a named Procedural vector property. + All point light shadow passes. - - - + - Discard all the queued ProceduralMaterial rendering operations that have not started yet. + -X point light shadow cubemap face. - + - The type of generated image in a ProceduralMaterial. + -Y point light shadow cubemap face. - + - Ambient occlusion map. + -Z point light shadow cubemap face. - + - Detail mask map. + +X point light shadow cubemap face. - + - Diffuse map. + +Y point light shadow cubemap face. - + - Emissive map. + +Z point light shadow cubemap face. - + - Height map. + Spotlight shadow pass. - + - Metalness map. + Used by CommandBuffer.SetShadowSamplingMode. - + - Normal (Bump) map. + Default shadow sampling mode: sampling with a comparison filter. - + - Opacity (Tranparency) map. + Shadow sampling mode for sampling the depth value. - + - Roughness map. + Adding a SortingGroup component to a GameObject will ensure that all Renderers within the GameObject's descendants will be sorted and rendered together. - + - Smoothness map (formerly referred to as Glossiness). + Unique ID of the Renderer's sorting layer. - + - Specular map. + Name of the Renderer's sorting layer. - + - Undefined type. + Renderer's order within a sorting layer. - + - The global Substance engine processor usage (as used for the ProceduralMaterial.substanceProcessorUsage property). + Spherical harmonics up to the second order (3 bands, 9 coefficients). - + - All physical processor cores are used for ProceduralMaterial generation. + Add ambient lighting to probe data. + - + - Half of all physical processor cores are used for ProceduralMaterial generation. + Add directional light to probe data. + + + - + - A single physical processor core is used for ProceduralMaterial generation. + Clears SH probe to zero. - + - Exact control of processor usage is not available. + 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. - + - Describes a ProceduralProperty. + Returns true if SH probes are equal. + + - + - The names of the individual components of a Vector234 ProceduralProperty. + Scales SH by a given factor. + + - + - The available options for a ProceduralProperty of type Enum. + Scales SH by a given factor. + + - + - The name of the GUI group. Used to display ProceduralProperties in groups. + Returns true if SH probes are different. + + - + - If true, the Float or Vector property is constrained to values within a specified range. + Adds two SH probes. + + - + - The label of the ProceduralProperty. Can contain space and be overall more user-friendly than the 'name' member. + Access individual SH coefficients. - + - If hasRange is true, maximum specifies the maximum allowed value for this Float or Vector property. + Provides an interface to the Unity splash screen. - + - If hasRange is true, minimum specifies the minimum allowed value for this Float or Vector property. + Returns true once the splash screen as finished. This is once all logos have been shown for their specified duration. - + - The name of the ProceduralProperty. Used to get and set the values. + 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. - + - Specifies the step size of this Float or Vector property. Zero is no step. + Immediately draws the splash screen. Ensure you have called Rendering.SplashScreen.Begin before you start calling this. - + - The ProceduralPropertyType describes what type of property this is. + Specifies the operation that's performed on the stencil buffer when rendering. - + - The type of a ProceduralProperty. + Decrements the current stencil buffer value. Clamps to 0. - + - Procedural boolean property. Use with ProceduralMaterial.GetProceduralBoolean. + Decrements the current stencil buffer value. Wraps stencil buffer value to the maximum representable unsigned value when decrementing a stencil buffer value of zero. - + - Procedural Color property without alpha. Use with ProceduralMaterial.GetProceduralColor. + Increments the current stencil buffer value. Clamps to the maximum representable unsigned value. - + - Procedural Color property with alpha. Use with ProceduralMaterial.GetProceduralColor. + Increments the current stencil buffer value. Wraps stencil buffer value to zero when incrementing the maximum representable unsigned value. - + - Procedural Enum property. Use with ProceduralMaterial.GetProceduralEnum. + Bitwise inverts the current stencil buffer value. - + - Procedural float property. Use with ProceduralMaterial.GetProceduralFloat. + Keeps the current stencil value. - + - Procedural Texture property. Use with ProceduralMaterial.GetProceduralTexture. + Replace the stencil buffer value with reference value (specified in the shader). - + - Procedural Vector2 property. Use with ProceduralMaterial.GetProceduralVector. + Sets the stencil buffer value to zero. - + - Procedural Vector3 property. Use with ProceduralMaterial.GetProceduralVector. + Texture "dimension" (type). - + - Procedural Vector4 property. Use with ProceduralMaterial.GetProceduralVector. + Any texture type. - + - Class for ProceduralTexture handling. + Cubemap texture. - + - The format of the pixel data in the texture (Read Only). + Cubemap array texture (CubemapArray). - + - Check whether the ProceduralMaterial that generates this ProceduralTexture is set to an output format with an alpha channel. + No texture is assigned. - + - Grab pixel values from a ProceduralTexture. - + 2D texture (Texture2D). - X-coord of the top-left corner of the rectangle to grab. - Y-coord of the top-left corner of the rectangle to grab. - Width of rectangle to grab. - Height of the rectangle to grab. -Get the pixel values from a rectangular area of a ProceduralTexture into an array. -The block is specified by its x,y offset in the texture and by its width and height. The block is "flattened" into the array by scanning the pixel values across rows one by one. - + - The output type of this ProceduralTexture. + 2D array texture (Texture2DArray). - + - Controls the from script. + 3D volume texture (Texture3D). - + - Sets profiler output file in built players. + Texture type is not initialized or unknown. - + - Enables the Profiler. + A flag representing each UV channel. - + - Sets profiler output file in built players. + First UV channel. - + - Resize the profiler sample buffers to allow the desired amount of samples per thread. + Second UV channel. - + - Heap size used by the program. + Third UV channel. - - Size of the used heap in bytes, (or 0 if the profiler is disabled). - - + - Displays the recorded profiledata in the profiler. + Fourth UV channel. - - + - Begin profiling a piece of code with a custom label. + Rendering path of a Camera. - - - + - Begin profiling a piece of code with a custom label. + Deferred Lighting (Legacy). - - - + - End profiling a piece of code with a custom label. + Deferred Shading. - + - Returns the size of the mono heap. + Forward Rendering. - + - Returns the used size from mono. + Use Player Settings. - + - Returns the runtime memory usage of the resource. + Vertex Lit. - - + - A script interface for a. + RenderMode for the Canvas. - + - The aspect ratio of the projection. + Render using the Camera configured on the Canvas. - + - The far clipping plane distance. + Render at the end of the scene using a 2D Canvas. - + - The field of view of the projection in degrees. + Render using any Camera in the scene that can render the layer. - + - Which object layers are ignored by the projector. + The Render Settings contain values for a range of visual elements in your scene, like fog and ambient light. - + - The material that will be projected onto every object. + Ambient lighting coming from the sides. - + - The near clipping plane distance. + Ambient lighting coming from below. - + - Is the projection orthographic (true) or perspective (false)? + How much the light from the Ambient Source affects the scene. - + - Projection's half-size when in orthographic mode. + Flat ambient lighting color. - + - Base class to derive custom property attributes from. Use this to create custom attributes for script variables. + Ambient lighting mode. - + - Optional field to specify the order that multiple DecorationDrawers should be drawn in. + Custom or skybox ambient lighting data. - + - Script interface for. + Ambient lighting coming from above. - + - Active color space (Read Only). + Custom specular reflection cubemap. - + - Global anisotropic filtering mode. + Default reflection mode. - + - Set The AA Filtering option. + Cubemap resolution for default reflection. - + - 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. + The fade speed of all flares in the scene. - + - 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. + The intensity of all flares in the scene. - + - If enabled, billboards will face towards camera position rather than camera orientation. + Is fog enabled? - + - Blend weights. + The color of the fog. - + - Desired color space (Read Only). + The density of the exponential fog. - + - Global multiplier for the LOD's switching distance. + The ending distance of linear fog. - + - A texture size limit applied to all textures. + Fog mode to use. - + - A maximum LOD level. All LOD groups. + The starting distance of linear fog. - + - Maximum number of frames queued up by graphics driver. + Size of the Light halos. - + - The indexed list of available Quality Settings. + The number of times a reflection includes other reflections. - + - Budget for how many ray casts can be performed per frame for approximate collision testing. + How much the skybox / custom cubemap reflection affects the scene. - + - The maximum number of pixel lights that should affect any object. + The global skybox to use. - + - Enables realtime reflection probes. + The color used for the sun shadows in the Subtractive lightmode. - + - The normalized cascade distribution for a 2 cascade setup. The value defines the position of the cascade with respect to Zero. + The light used by the procedural skybox. - + - 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. + Fully describes setup of RenderTarget. - + - Number of cascades to use for directional light shadows. + Color Buffers to set. - + - Shadow drawing distance. + Load Actions for Color Buffers. It will override any actions set on RenderBuffers themselves. - + - Offset shadow frustum near plane. + Store Actions for Color Buffers. It will override any actions set on RenderBuffers themselves. - + - Directional light shadow projection. + Cubemap face to render to. - + - Use a two-pass shader for the vegetation in the terrain engine. + Depth Buffer to set. - + - The VSync Count. + Load Action for Depth Buffer. It will override any actions set on RenderBuffer itself. - + - Decrease the current quality level. + Slice of a Texture3D or Texture2DArray to set as a render target. - Should expensive changes be applied (Anti-aliasing etc). - + - Returns the current graphics quality level. + Store Actions for Depth Buffer. It will override any actions set on RenderBuffer itself. - + - Increase the current quality level. + Mip Level to render to. - Should expensive changes be applied (Anti-aliasing etc). - + - Sets a new graphics quality level. + Constructs RenderTargetSetup. - Quality index to set. - Should expensive changes be applied (Anti-aliasing etc). + Color Buffer(s) to set. + Depth Buffer to set. + Mip Level to render to. + Cubemap face to render to. + - + - Quaternions are used to represent rotations. + Constructs RenderTargetSetup. + Color Buffer(s) to set. + Depth Buffer to set. + Mip Level to render to. + Cubemap face to render to. + - + - Returns the euler angle representation of the rotation. + Constructs RenderTargetSetup. + Color Buffer(s) to set. + Depth Buffer to set. + Mip Level to render to. + Cubemap face to render to. + - + - The identity rotation (Read Only). + Constructs RenderTargetSetup. + Color Buffer(s) to set. + Depth Buffer to set. + Mip Level to render to. + Cubemap face to render to. + - + - W component of the Quaternion. Don't modify this directly unless you know quaternions inside out. + Constructs RenderTargetSetup. + Color Buffer(s) to set. + Depth Buffer to set. + Mip Level to render to. + Cubemap face to render to. + - + - X component of the Quaternion. Don't modify this directly unless you know quaternions inside out. + Constructs RenderTargetSetup. + Color Buffer(s) to set. + Depth Buffer to set. + Mip Level to render to. + Cubemap face to render to. + - + - Y component of the Quaternion. Don't modify this directly unless you know quaternions inside out. + Render textures are textures that can be rendered to. - + - Z component of the Quaternion. Don't modify this directly unless you know quaternions inside out. + Currently active render texture. - + - Returns the angle in degrees between two rotations a and b. + The antialiasing level for the RenderTexture. - - - + - Creates a rotation which rotates angle degrees around axis. + Mipmap levels are generated automatically when this flag is set. - - - + - Constructs new Quaternion with given x,y,z,w components. + Color buffer of the render texture (Read Only). - - - - - + - The dot product between two rotations. + The precision of the render texture's depth buffer in bits (0, 16, 24/32 are supported). - - - + - Returns a rotation that rotates z degrees around the z axis, x degrees around the x axis, and y degrees around the y axis (in that order). + Depth/stencil buffer of the render texture (Read Only). - - - - + - Returns a rotation that rotates z degrees around the z axis, x degrees around the x axis, and y degrees around the y axis (in that order). + Dimensionality (type) of the render texture. - - + - Creates a rotation which rotates from fromDirection to toDirection. + Enable random access write into this render texture on Shader Model 5.0 level shaders. - - - + - Returns the Inverse of rotation. + The color format of the render texture. - - + - Interpolates between a and b by t and normalizes the result afterwards. The parameter t is clamped to the range [0, 1]. + The height of the render texture in pixels. - - - - + - Interpolates between a and b by t and normalizes the result afterwards. The parameter t is not clamped. + If enabled, this Render Texture will be used as a Texture3D. - - - - + - Creates a rotation with the specified forward and upwards directions. + Does this render texture use sRGB read/write conversions (Read Only). - The direction to look in. - The vector that defines in which direction up is. - + - Creates a rotation with the specified forward and upwards directions. + Render texture has mipmaps when this flag is set. - The direction to look in. - The vector that defines in which direction up is. - + - Are two quaternions equal to each other? + Volume extent of a 3D render texture. - - - + - Combines rotations lhs and rhs. + The width of the render texture in pixels. - Left-hand side quaternion. - Right-hand side quaternion. - + - Rotates the point point with rotation. + Actually creates the RenderTexture. - - - + - Are two quaternions different from each other? + 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. - + - Rotates a rotation from towards to. + 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. - + - Set x, y, z and w components of an existing Quaternion. + 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. - + - Creates a rotation which rotates from fromDirection to toDirection. + Discards the contents of the RenderTexture. - - + Should the colour buffer be discarded? + Should the depth buffer be discarded? - + - Creates a rotation with the specified forward and upwards directions. + Discards the contents of the RenderTexture. - The direction to look in. - The vector that defines in which direction up is. + Should the colour buffer be discarded? + Should the depth buffer be discarded? - + - Creates a rotation with the specified forward and upwards directions. + Generate mipmap levels of a render texture. - 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]. + Retrieve a native (underlying graphics API) pointer to the depth buffer resource. - - - + + Pointer to an underlying graphics API depth buffer resource. + - + - Spherically interpolates between a and b by t. The parameter t is not clamped. + 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. + Anti-aliasing (1,2,4,8). - + - Access the x, y, z, w components using [0], [1], [2], [3] respectively. + Is the render texture actually created? - + - Converts a rotation to angle-axis representation (angles in degrees). + Indicate that there's a RenderTexture restore operation expected. - - - + - Returns a nicely formatted string of the Quaternion. + Releases the RenderTexture. - - + - Returns a nicely formatted string of the Quaternion. + Release a temporary texture allocated with GetTemporary. - + - + - Overrides the global Physics.queriesHitTriggers. + Assigns this RenderTexture as a global shader property named propertyName. + - + - Queries always report Trigger hits. + Does a RenderTexture have stencil buffer? + Render texture, or null for main screen. - + - Queries never report Trigger hits. + Format of a RenderTexture. - + - Queries use the global Physics.queriesHitTriggers setting. + Color render texture format, 1 bit for Alpha channel, 5 bits for Red, Green and Blue channels. - + - Used by Animation.Play function. + Color render texture format. 10 bits for colors, 2 bits for alpha. - + - Will start playing after all other animations have stopped playing. + Color render texture format, 8 bits per channel. - + - Starts playing immediately. This can be used if you just want to quickly create a duplicate animation. + Color render texture format, 4 bit per channel. - + - Class for generating random data. + Four color render texture format, 16 bits per channel, fixed point, unsigned normalized. - + - Returns a random point inside a circle with radius 1 (Read Only). + Color render texture format, 32 bit floating point per channel. - + - Returns a random point inside a sphere with radius 1 (Read Only). + Color render texture format, 16 bit floating point per channel. - + - Returns a random point on the surface of a sphere with radius 1 (Read Only). + Four channel (ARGB) render texture format, 32 bit signed integer per channel. - + - Returns a random rotation (Read Only). + Color render texture format, 8 bits per channel. - + - Returns a random rotation with uniform distribution (Read Only). + Default color render texture format: will be chosen accordingly to Frame Buffer format and Platform. - + - Sets the seed for the random number generator. + Default HDR color render texture format: will be chosen accordingly to Frame Buffer format and Platform. - + - Returns a random number between 0.0 [inclusive] and 1.0 [inclusive] (Read Only). + A depth render texture format. - + - Generates a random color from HSV and alpha ranges. + Scalar (R) render texture format, 8 bit fixed point. - 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. + Scalar (R) render texture format, 32 bit floating point. - 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. + Two color (RG) render texture format, 16 bits per channel, fixed point, unsigned normalized. - 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. + Color render texture format. R and G channels are 11 bit floating point, B channel is 10 bit floating point. - 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. + Color render texture format. - 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. - - + - Returns a random float number between and min [inclusive] and max [inclusive] (Read Only). + Two color (RG) render texture format, 32 bit floating point per channel. - - - + - Returns a random integer number between min [inclusive] and max [exclusive] (Read Only). + Two color (RG) render texture format, 16 bit floating point per channel. - - - + - Attribute used to make a float or int variable in a script be restricted to a specific range. + Two channel (RG) render texture format, 32 bit signed integer per channel. - + - Attribute used to make a float or int variable in a script be restricted to a specific range. + Scalar (R) render texture format, 16 bit floating point. - The minimum allowed value. - The maximum allowed value. - + - Representation of rays. + Scalar (R) render texture format, 32 bit signed integer. - + - The direction of the ray. + A native shadowmap render texture format. - + - The origin point of the ray. + Color space conversion mode of a RenderTexture. - + - Creates a ray starting at origin along direction. + Render texture contains sRGB (color) data, perform Linear<->sRGB conversions on it. - - - + - Returns a point at distance units along the ray. + Default color space conversion based on project settings. - - + - Returns a nicely formatted string for this ray. + Render texture contains linear (non-color) data; don't perform color conversions on it. - - + - Returns a nicely formatted string for this ray. + The RequireComponent attribute automatically adds required components as dependencies. - - + - A ray in 2D space. + Require a single component. + - + - The direction of the ray in world space. + Require a two components. + + - + - The starting point of the ray in world space. + Require three components. + + + - + - Get a point that lies a given distance along a ray. + Represents a display resolution. - Distance of the desired point along the path of the ray. - + - Structure used to get information back from a raycast. + Resolution height in pixels. - + - The barycentric coordinate of the triangle we hit. + Resolution's vertical refresh rate in Hz. - + - The Collider that was hit. + Resolution width in pixels. - + - The distance from the ray's origin to the impact point. + Returns a nicely formatted string of the resolution. + + A string with the format "width x height @ refreshRateHz". + - + - The uv lightmap coordinate at the impact point. + Asynchronous load request from the Resources bundle. - + - The normal of the surface the ray hit. + Asset object being loaded (Read Only). - + - The impact point in world space where the ray hit the collider. + The Resources class allows you to find and access Objects including assets. - + - The Rigidbody of the collider that was hit. If the collider is not attached to a rigidbody then it is null. + 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. + - + - The uv texture coordinate at the impact point. + Returns a list of all objects of Type T. - + - The secondary uv texture coordinate at the impact point. + 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 Transform of the rigidbody or collider that was hit. + 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 index of the triangle that was hit. + 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. - + - Information returned about an object detected by a raycast in 2D physics. + 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. - + - The centroid of the primitive used to perform the cast. + 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. - + - The collider hit by the ray. + 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. - + - The distance from the ray origin to the impact point. + Returns a resource at an asset path (Editor Only). + Pathname of the target asset. + Type filter for objects returned. - + - Fraction of the distance along the ray that the hit occurred. + Returns a resource at an asset path (Editor Only). + Pathname of the target asset. - + - The normal vector of the surface hit by the ray. + 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. + - + - The point in world space where the ray hit the collider's surface. + 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. + - + - The Rigidbody2D attached to the object that was hit. + 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. - + - The Transform of the object that was hit. + Unloads assetToUnload from memory. + - + - A 2D Rectangle defined by X and Y position, width and height. + Unloads assets that are not used. + + Object on which you can yield to wait until the operation completes. + - + - The position of the center of the rectangle. + Control of an object's position through physics simulation. - + - The height of the rectangle, measured from the Y position. + The angular drag of the object. - + - The position of the maximum corner of the rectangle. + The angular velocity vector of the rigidbody measured in radians per second. - + - The position of the minimum corner of the rectangle. + The center of mass relative to the transform's origin. - + - The X and Y position of the rectangle. + The Rigidbody's collision detection mode. - + - The width and height of the rectangle. + Controls which degrees of freedom are allowed for the simulation of this Rigidbody. - + - The width of the rectangle, measured from the X position. + Should collision detection be enabled? (By default always enabled). - + - The X coordinate of the rectangle. + The drag of the object. - + - The maximum X coordinate of the rectangle. + Controls whether physics will change the rotation of the object. - + - The minimum X coordinate of the rectangle. + The diagonal inertia tensor of mass relative to the center of mass. - + - The Y coordinate of the rectangle. + The rotation of the inertia tensor. - + - The maximum Y coordinate of the rectangle. + Interpolation allows you to smooth out the effect of running physics at a fixed frame rate. - + - The minimum Y coordinate of the rectangle. + Controls whether physics affects the rigidbody. - + - 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. + The mass of the rigidbody. - 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. + The maximimum angular velocity of the rigidbody. (Default 7) range { 0, infinity }. - 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. + Maximum velocity of a rigidbody when moving out of penetrating state. - 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 position of the rigidbody. - 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. - + - + The rotation of the rigidbody. - - + - Creates a rectangle given a size and position. + The angular velocity below which objects start going to sleep. (Default 0.14) range { 0, infinity }. - 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 mass-normalized energy threshold, below which objects start going to sleep. - 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. + The linear velocity below which objects start going to sleep. (Default 0.14) range { 0, infinity }. - Rectangle to get a point inside. - Normalized coordinates to get a point for. - + - Returns true if the rectangles are the same. + The solverIterations determines how accurately Rigidbody joints and collision contacts are resolved. Overrides Physics.defaultSolverIterations. Must be positive. - - - + - Returns true if the rectangles are different. + The solverVelocityIterations affects how how accurately Rigidbody joints and collision contacts are resolved. Overrides Physics.defaultSolverVelocityIterations. Must be positive. - - - + - 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. + Force cone friction to be used for this rigidbody. - Other rectangle to test overlapping with. - Does the test allow the Rects' widths and heights 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. + Controls whether gravity affects this rigidbody. - Other rectangle to test overlapping with. - Does the test allow the Rects' widths and heights to be negative? - + - Returns the normalized coordinates cooresponding the the point. + The velocity vector of the rigidbody. - Rectangle to get normalized coordinates inside. - A point inside the rectangle to get normalized coordinates for. - + - Set components of an existing Rect. + The center of mass of the rigidbody in world space (Read Only). - - - - - + - Returns a nicely formatted string for this Rect. + 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. - + - Returns a nicely formatted string for this Rect. + 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. - + - Offsets for rectangles, borders, etc. + 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. - + - Bottom edge size. + Adds a force to the Rigidbody. + Force vector in world coordinates. + Type of force to apply. - + - Shortcut for left + right. (Read Only) + Adds a force to the Rigidbody. + Force vector in world coordinates. + Type of force to apply. - + - Left edge size. + 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. - + - Right edge size. + 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. - + - Top edge size. + 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. + - + - Shortcut for top + bottom. (Read Only) + 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. + - + - Add the border offsets to a rect. + Adds a force to the rigidbody relative to its coordinate system. - + Force vector in local coordinates. + - + - Creates a new rectangle with offsets. + Adds a force to the rigidbody relative to its coordinate system. - - - - + Force vector in local coordinates. + - + - Creates a new rectangle with offsets. + 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. + - + - Remove the border offsets from a rect. + 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. + - + - Position, size, anchor and pivot information for a rectangle. + Adds a torque to the rigidbody relative to its coordinate system. + Torque vector in local coordinates. + - + - The position of the pivot of this RectTransform relative to the anchor reference point. + Adds a torque to the rigidbody relative to its coordinate system. + Torque vector in local coordinates. + - + - The 3D position of the pivot of this RectTransform relative to the anchor reference point. + 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. + - + - The normalized position in the parent RectTransform that the upper right corner is anchored to. + 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. + - + - The normalized position in the parent RectTransform that the lower left corner is anchored to. + Adds a torque to the rigidbody. + Torque vector in world coordinates. + - + - The offset of the upper right corner of the rectangle relative to the upper right anchor. + Adds a torque to the rigidbody. + Torque vector in world coordinates. + - + - The offset of the lower left corner of the rectangle relative to the lower left anchor. + 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 normalized position in this RectTransform that it rotates around. + 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. + - + - Event that is invoked for RectTransforms that need to have their driven properties reapplied. + The closest point to the bounding box of the attached colliders. - + - + - The calculated rectangle in the local space of the Transform. + The velocity of the rigidbody at the point worldPoint in global space. + - + - The size of this RectTransform relative to the distances between the anchors. + The velocity relative to the rigidbody at the point relativePoint. + - + - An axis that can be horizontal or vertical. + Is the rigidbody sleeping? - + - Horizontal. + Moves the rigidbody to position. + The new position for the Rigidbody object. - + - Vertical. + Rotates the rigidbody to rotation. + The new rotation for the Rigidbody. - + - Enum used to specify one edge of a rectangle. + Reset the center of mass of the rigidbody. - + - The bottom edge. + Reset the inertia tensor value and rotation. - + - The left edge. + Sets the mass based on the attached colliders assuming a constant density. + - + - The right edge. + Forces a rigidbody to sleep at least one frame. - + - The top edge. + 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. + - + - Get the corners of the calculated rectangle in the local space of its Transform. + Like Rigidbody.SweepTest, but returns all hits. - Array that corners should be filled into. + 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. + - + - Get the corners of the calculated rectangle in world space. + Forces a rigidbody to wake up. - Array that corners should be filled into. - + - Delegate used for the reapplyDrivenProperties event. + Rigidbody physics component for 2D sprites. - - + - Set the distance of this rectangle relative to a specified edge of the parent rectangle, while also setting its size. + Coefficient of angular drag. - 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. + Angular velocity in degrees per second. - The axis to specify the size along. - The desired size along the specified axis. - + - Utility class containing helper methods for working with RectTransform. + Returns the number of Collider2D attached to this Rigidbody2D. - + - Flips the horizontal and vertical axes of the RectTransform size and alignment, and optionally its children as well. + The physical behaviour type of the Rigidbody2D. - 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 center of mass of the rigidBody in local space. - 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. + The method used by the physics engine to check if two objects have collided. - - - - - Pixel adjusted point. - - + - Given a rect transform, return the corner points in pixel accurate coordinates. + Controls which degrees of freedom are allowed for the simulation of this Rigidbody2D. - - - - Pixel adjusted rect. - - + - Does the RectTransform contain the screen point as seen from the given camera? + Coefficient of drag. - The RectTransform to test with. - The screen point to test. - The camera from which the test is performed from. - - 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. + Should the rigidbody be prevented from rotating? - 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. + Controls whether physics will change the rotation of the object. - 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 degree to which this object is affected by gravity. - + - The color with which the texture of reflection probe will be cleared. + The rigidBody rotational inertia. - + - Reference to the baked texture of the reflection probe's surrounding. + Physics interpolation used between updates. - + - Distance around probe used for blending (used in deferred probes). + Should this rigidbody be taken out of physics control? - + - The bounding volume of the reflection probe (Read Only). + Mass of the rigidbody. - + - Should this reflection probe use box projection? + The position of the rigidbody. - + - The center of the box area in which reflections will be applied to the objects. Measured in the probes's local space. + The rotation of the rigidbody. - + - How the reflection probe clears the background. + The PhysicsMaterial2D that is applied to all Collider2D attached to this Rigidbody2D. - + - This is used to render parts of the reflecion probe's surrounding selectively. + Indicates whether the rigid body should be simulated or not by the physics system. - + - Reference to the baked texture of the reflection probe's surrounding. Use this to assign custom reflection texture. + The sleep state that the rigidbody will initially be in. - + - The far clipping plane distance when rendering the probe. + Should the total rigid-body mass be automatically calculated from the Collider2D.density of attached colliders? - + - Should this reflection probe use HDR rendering? + Should kinematickinematic and kinematicstatic collisions be allowed? - + - Reflection probe importance. + Linear velocity of the rigidbody. - + - The intensity modifier that is applied to the texture of reflection probe in the shader. + Gets the center of mass of the rigidBody in global space. - + - Should reflection probe texture be generated in the Editor (ReflectionProbeMode.Baked) or should probe use custom specified texure (ReflectionProbeMode.Custom)? + Apply a force to the rigidbody. + Components of the force in the X and Y axes. + The method used to apply the specified force. - + - The near clipping plane distance when rendering the probe. + 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. - + - Sets the way the probe will refresh. - -See Also: ReflectionProbeRefreshMode. + 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. - + - Resolution of the underlying reflection texture in pixels. + Apply a torque at the rigidbody's centre of mass. + Torque to apply. + The force mode to use. - + - Shadow drawing distance when rendering the probe. + 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. + - + - The size of the box area in which reflections will be applied to the objects. Measured in the probes's local space. + 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. + - + - Texture which is passed to the shader of the objects in the vicinity of the reflection probe (Read Only). + 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. + - + - Sets this probe time-slicing mode - -See Also: ReflectionProbeTimeSlicingMode. + 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. + - + - Reflection probe type. + 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. + - + - Utility method to blend 2 cubemaps into a target render texture. + Retrieves all colliders in contact with any of the collider(s) attached to this rigidbody. - Cubemap to blend from. - Cubemap to blend to. - Blend weight. - RenderTexture which will hold the result of the blend. + An array of Collider2D used to receive the results. - Returns trues if cubemaps were blended, false otherwise. + Returns the number of colliders placed in the colliders array. - + - Checks if a probe has finished a time-sliced render. + Retrieves all contact points for all of the collider(s) attached to this rigidbody, with the results filtered by the ContactFilter2D. - An integer representing the RenderID as returned by the RenderProbe method. + 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. - - True if the render has finished, false otherwise. - - See Also: timeSlicingMode - + Returns the number of contacts placed in the contacts array. - + - Refreshes the probe's cubemap. + Retrieves all colliders in contact with any of the collider(s) attached to this rigidbody, with the results filtered by the ContactFilter2D. - Target RendeTexture in which rendering should be done. Specifying null will update the probe's default texture. + 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. - - 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 - + Returns the number of colliders placed in the colliders array. - + - Keeps two Rigidbody2D at their relative orientations. + Get a local space point given the point point in rigidBody global space. + The global space point to transform into local space. - + - The current angular offset between the Rigidbody2D that the joint connects. + The velocity of the rigidbody at the point Point in global space. + The global space point to calculate velocity for. - + - Should both the linearOffset and angularOffset be calculated automatically? + 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. - + - Scales both the linear and angular forces used to correct the required relative orientation. + Get a global space vector given the vector relativeVector in rigidBody local space. + The local space vector to transform into a global space vector. - + - The current linear offset between the Rigidbody2D that the joint connects. + Get a local space vector given the vector vector in rigidBody global space. + The global space vector to transform into a local space vector. - + - The maximum force that can be generated when trying to maintain the relative joint constraint. + Is the rigidbody "awake"? - + - The maximum torque that can be generated when trying to maintain the relative joint constraint. + Is the rigidbody "sleeping"? - + - The world-space position that is currently trying to be maintained. + 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. + - + - Color or depth buffer part of a RenderTexture. + 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. + - + - 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. + 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. + - + - General functionality for all renderers. + 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. + - + - The bounding volume of the renderer (Read Only). + Moves the rigidbody to position. + The new position for the Rigidbody object. - + - Makes the rendered 3D object visible if enabled. + Rotates the rigidbody to angle (given in degrees). + The new rotation angle for the Rigidbody object. - + - Has this renderer been statically batched with any other renderers? + 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. + - + - Is this renderer visible in any camera? (Read Only) + 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. + - + - The index of the baked lightmap applied to this renderer. + Make the rigidbody "sleep". - + - The UV scale & offset used for a lightmap. + Disables the "sleeping" state of a rigidbody. - + - Matrix that transforms a point from local space into world space (Read Only). + Use these flags to constrain motion of Rigidbodies. - + - Returns the first instantiated Material assigned to the renderer. + Freeze rotation and motion along all axes. - + - Returns all the instantiated materials of this object. + Freeze motion along all axes. - + - If set, Renderer will use this Transform's position to find the light or reflection probe. + Freeze motion along the X-axis. - + - The index of the realtime lightmap applied to this renderer. + Freeze motion along the Y-axis. - + - The UV scale & offset used for a realtime lightmap. + Freeze motion along the Z-axis. - + - Does this object receive shadows? + Freeze rotation along all axes. - + - Should reflection probes be used for this Renderer? + Freeze rotation along the X-axis. - + - Does this object cast shadows? + Freeze rotation along the Y-axis. - + - The shared material of this object. + Freeze rotation along the Z-axis. - + + + No constraints. + + + + + Use these flags to constrain motion of the Rigidbody2D. + + + - All the shared materials of this object. + Freeze rotation and motion along all axes. - + - Unique ID of the Renderer's sorting layer. + Freeze motion along the X-axis and Y-axis. - + - Name of the Renderer's sorting layer. + Freeze motion along the X-axis. - + - Renderer's order within a sorting layer. + Freeze motion along the Y-axis. - + - Should light probes be used for this Renderer? + Freeze rotation along the Z-axis. - + - Matrix that transforms a point from world space into local space (Read Only). + No constraints. - + - 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. + Rigidbody interpolation mode. - - + - Get per-renderer material property block. + Extrapolation will predict the position of the rigidbody based on the current velocity. - - + - Lets you add per-renderer material parameters without duplicating a material. + Interpolation will always lag a little bit behind but can be smoother than extrapolation. - - + - Ambient lighting mode. + No Interpolation. - + - Ambient lighting is defined by a custom cubemap. + Interpolation mode for Rigidbody2D objects. - + - Flat ambient lighting. + Smooth an object's movement based on an estimate of its position in the next frame. - + - Skybox-based or custom ambient lighting. + Smooth movement based on the object's positions in previous frames. - + - Trilight ambient lighting. + Do not apply any smoothing to the object's movement. - + - Blend mode for controlling the blending. + Settings for a Rigidbody2D's initial sleep state. - + - Blend factor is (Ad, Ad, Ad, Ad). + Rigidbody2D never automatically sleeps. - + - Blend factor is (Rd, Gd, Bd, Ad). + Rigidbody2D is initially asleep. - + - Blend factor is (1, 1, 1, 1). + Rigidbody2D is initially awake. - + - Blend factor is (1 - Ad, 1 - Ad, 1 - Ad, 1 - Ad). + The physical behaviour type of the Rigidbody2D. - + - Blend factor is (1 - Rd, 1 - Gd, 1 - Bd, 1 - Ad). + Sets the Rigidbody2D to have dynamic behaviour. - + - Blend factor is (1 - As, 1 - As, 1 - As, 1 - As). + Sets the Rigidbody2D to have kinematic behaviour. - + - Blend factor is (1 - Rs, 1 - Gs, 1 - Bs, 1 - As). + Sets the Rigidbody2D to have static behaviour. - + - Blend factor is (As, As, As, As). + Control ConfigurableJoint's rotation with either X & YZ or Slerp Drive. - + - Blend factor is (f, f, f, 1); where f = min(As, 1 - Ad). + Use Slerp drive. - + - Blend factor is (Rs, Gs, Bs, As). + Use XY & Z Drive. - + - Blend factor is (0, 0, 0, 0). + Attribute for setting up RPC functions. - + - Blend operation. + Option for who will receive an RPC, used by NetworkView.RPC. - + - Add (s + d). + Sends to everyone. - + - Color burn (Advanced OpenGL blending). + Sends to everyone and adds to the buffer. - + - Color dodge (Advanced OpenGL blending). + Sends to everyone except the sender. - + - Darken (Advanced OpenGL blending). + Sends to everyone except the sender and adds to the buffer. - + - Difference (Advanced OpenGL blending). + Sends to the server only. - + - Exclusion (Advanced OpenGL blending). + Runtime representation of the AnimatorController. It can be used to change the Animator's controller during runtime. - + - Hard light (Advanced OpenGL blending). + Retrieves all AnimationClip used by the controller. - + - HSL color (Advanced OpenGL blending). + Set RuntimeInitializeOnLoadMethod type. - + - HSL Hue (Advanced OpenGL blending). + After scene is loaded. - + - HSL luminosity (Advanced OpenGL blending). + Before scene is loaded. - + - HSL saturation (Advanced OpenGL blending). + Allow a runtime class method to be initialized when a game is loaded at runtime + without action from the user. - + - Lighten (Advanced OpenGL blending). + Set RuntimeInitializeOnLoadMethod type. - + - Logical AND (s & d) (D3D11.1 only). + Creation of the runtime class used when scenes are loaded. + Determine whether methods are called before or after the + scene is loaded. - + - Logical inverted AND (!s & d) (D3D11.1 only). + Creation of the runtime class used when scenes are loaded. + Determine whether methods are called before or after the + scene is loaded. - + - Logical reverse AND (s & !d) (D3D11.1 only). + The platform application is running. Returned by Application.platform. - + - Logical Clear (0). + In the player on the Apple's tvOS. - + - Logical Copy (s) (D3D11.1 only). + In the player on Android devices. - + - Logical inverted Copy (!s) (D3D11.1 only). + In the player on the iPhone. - + - Logical Equivalence !(s XOR d) (D3D11.1 only). + In the Unity editor on Linux. - + - Logical Inverse (!d) (D3D11.1 only). + In the player on Linux. - + - Logical NAND !(s & d). D3D11.1 only. + In the Dashboard widget on macOS. - + - Logical No-op (d) (D3D11.1 only). + In the Unity editor on macOS. - + - Logical NOR !(s | d) (D3D11.1 only). + In the player on macOS. - + - Logical OR (s | d) (D3D11.1 only). + In the web player on macOS. - + - Logical inverted OR (!s | d) (D3D11.1 only). + In the player on the Playstation 4. - + - Logical reverse OR (s | !d) (D3D11.1 only). + In the player on the PS Vita. - + - Logical SET (1) (D3D11.1 only). + In the player on Samsung Smart TV. - + - Logical XOR (s XOR d) (D3D11.1 only). + In the player on Nintendo Switch. - + - Max. + In the player on Tizen. - + - Min. + In the player on WebGL? - + - Multiply (Advanced OpenGL blending). + In the player on Wii U. - + - Overlay (Advanced OpenGL blending). + In the Unity editor on Windows. - + - Reverse subtract. + In the player on Windows. - + - Screen (Advanced OpenGL blending). + In the web player on Windows. - + - Soft light (Advanced OpenGL blending). + In the player on Windows Store Apps when CPU architecture is ARM. - + - Subtract. + In the player on Windows Store Apps when CPU architecture is X64. - + - Built-in temporary render textures produced during camera's rendering. + In the player on Windows Store Apps when CPU architecture is X86. - + - Target texture of currently rendering camera. + In the player on Xbox One. - + - Currently active render target. + Interface into SamsungTV specific functionality. - + - Camera's depth texture. + Returns true if there is an air mouse available. - + - Camera's depth+normals texture. + Changes the type of input the gamepad produces. - + - Deferred shading G-buffer #0 (typically diffuse color). + Changes the type of input the gesture camera produces. - + - Deferred shading G-buffer #1 (typically specular + roughness). + Returns true if the camera sees a hand. - + - Deferred shading G-buffer #2 (typically normals). + The type of input the remote's touch pad produces. - + - Deferred shading G-buffer #3 (typically emission/lighting). + Types of input the gamepad can produce. - + - Deferred lighting light buffer. + Joystick style input. - + - Deferred lighting HDR specular light buffer (Xbox 360 only). + Mouse style input. - + - Deferred lighting (normals+specular) G-buffer. + Types of input the gesture camera can produce. - + - Reflections gathered from default reflection and reflections probes. + Two hands control two joystick axes. - + - Built-in shader modes used by Rendering.GraphicsSettings. + Hands control the mouse pointer. - + - Don't use any shader, effectively disabling the functionality. + No gesture input from the camera. - + - Use built-in shader (default). + Access to TV specific information. - + - Use custom shader instead of built-in one. + The server type. Possible values: +Developing, Development, Invalid, Operating. - + - Built-in shader types used by Rendering.GraphicsSettings. + Get local time on TV. - + - Shader used for deferred reflection probes. + Get UID from TV. - + - Shader used for deferred shading calculations. + Set the system language that is returned by Application.SystemLanguage. + - + - Shader used for legacy deferred lighting calculations. + Types of input the remote's touchpad can produce. - + - Defines a place in camera's rendering to attach Rendering.CommandBuffer objects to. + Remote dependent. On 2013 TVs dpad directions are determined by swiping in the correlating direction. On 2014 and 2015 TVs the remote has dpad buttons. - + - After camera's depth+normals texture is generated. + Touchpad works like an analog joystick. Not supported on the 2015 TV as there is no touchpad. - + - After camera's depth texture is generated. + Touchpad controls a remote curosr like a laptop's touchpad. This can be replaced by airmouse functionality which is available on 2014 and 2015 TVs. - + - After camera has done rendering everything. + Scaling mode to draw textures with. - + - After final geometry pass in deferred lighting. + 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. - + - After transparent objects in forward rendering. + Scales the texture, maintaining aspect ratio, so it completely fits withing the position rectangle passed to GUI.DrawTexture. - + - After opaque objects in forward rendering. + Stretches the texture to fill the complete rectangle passed in to GUI.DrawTexture. - + - After deferred rendering G-buffer is rendered. + Used when loading a scene in a player. - + - After image effects. + Adds the scene to the current loaded scenes. - + - After image effects that happen between opaque & transparent objects. + Closes all current loaded scenes and loads a scene. - + - After lighting pass in deferred rendering. + Run-time data structure for *.unity file. - + - After reflections pass in deferred rendering. + Returns the index of the scene in the Build Settings. Always returns -1 if the scene was loaded through an AssetBundle. - + - After skybox is drawn. + Returns true if the scene is modifed. - + - Before camera's depth+normals texture is generated. + Returns true if the scene is loaded. - + - Before camera's depth texture is generated. + Returns the name of the scene. - + - Before final geometry pass in deferred lighting. + Returns the relative path of the scene. Like: "AssetsMyScenesMyScene.unity". - + - Before transparent objects in forward rendering. + The number of root transforms of this scene. - + - Before opaque objects in forward rendering. + Returns all the root game objects in the scene. + + An array of game objects. + - + - Before deferred rendering G-buffer is rendered. + Returns all the root game objects in the scene. + A list which is used to return the root game objects. - + - Before image effects. + 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. + - + - Before image effects that happen between opaque & transparent objects. + Returns true if the Scenes are equal. + + - + - Before lighting pass in deferred rendering. + Returns true if the Scenes are different. + + - + - Before reflections pass in deferred rendering. + Scene management at run-time. - + - Before skybox is drawn. + Add a delegate to this to get notifications when the active scene has changed + - + - Specifies which color components will get written into the target framebuffer. + The total number of currently loaded scenes. - + - Write all components (R, G, B and Alpha). + Number of scenes in Build Settings. - + - Write alpha component. + Add a delegate to this to get notifications when a scene has loaded + - + - Write blue component. + Add a delegate to this to get notifications when a scene has unloaded + - + - Write green component. + 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. + + A reference to the new scene that was created, or an invalid scene if creation failed. + - + - Write red component. + Gets the currently active scene. + + The active scene. + - + - List of graphics commands to execute. + Returns an array of all the scenes currently open in the hierarchy. + + Array of Scenes in the Hierarchy. + - + - Name of this command buffer. + Get the scene at index in the SceneManager's list of added 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. + - + - Size of this command buffer in bytes (Read Only). + 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. + - + - Add a "blit into a render texture" command. + Searches through the scenes added to the SceneManager for a scene with the given name. - 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"). + Name of scene to find. + + A reference to the scene, if valid. If not, an invalid scene is returned. + - + - Add a "blit into a render texture" command. + Searches all scenes added to the SceneManager for a scene that has the given asset path. - 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"). + 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. + - + - Add a "blit into a render texture" command. + Loads the scene by its name or index in Build Settings. - 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"). + 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. - + - Add a "blit into a render texture" command. + Loads the scene by its name or index in Build Settings. - 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"). + 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. - + - Add a "blit into a render texture" command. + Loads the scene asynchronously in the background. - 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"). + 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. + + Use the AsyncOperation to determine if the operation has completed. + - + - Add a "blit into a render texture" command. + Loads the scene asynchronously in the background. - 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"). + 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. + + Use the AsyncOperation to determine if the operation has completed. + - + - Clear all commands in the buffer. + 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. - + - Adds a "clear render target" command. + Move a GameObject from its current scene to a new Scene. - Should clear depth buffer? - Should clear color buffer? - Color to clear with. - Depth to clear with (default is 1.0). + GameObject to move. + Scene to move into. - + - Create a new empty command buffer. + Set the scene to be active. + The scene to be set. + + Returns false if the scene is not loaded yet. + - + - Add a "draw mesh" command. + Destroys all GameObjects associated with the given scene and removes the scene from the SceneManager. - 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. + 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. + - + - Add a "draw procedural geometry" command. + Destroys all GameObjects associated with the given scene and removes the scene from the SceneManager. - 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. + 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. + - + - Add a "draw procedural geometry" command. + Destroys all GameObjects associated with the given scene and removes the scene from the SceneManager. - 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. - Offset where in the buffer the draw arguments are. + 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. + - + - Add a "draw renderer" command. + Destroys all GameObjects associated with the given scene and removes the scene from the SceneManager. - 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). + 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. + - + - Add a "get a temporary render texture" command. + Destroys all GameObjects associated with the given scene and removes the scene from the SceneManager. - 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). + 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. + - + - Send a user-defined event to a native code plugin. + Destroys all GameObjects associated with the given scene and removes the scene from the SceneManager. - Native code callback to queue for Unity's renderer to invoke. - User defined id to send to the callback. + 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. + - + - Add a "release a temporary render texture" command. + Scene and Build Settings related utilities. - Shader property name for this texture. - + - Add a "set global shader color property" command. + Get the build index from a scene path. - - - + Scene path (e.g: "AssetsScenesScene1.unity"). + + Build index. + - + - Add a "set global shader color property" command. + Get the scene path from a build index. - - - + + + Scene path (e.g "AssetsScenesScene1.unity"). + - + - Add a "set global shader float property" command. + Access to display information. - - - - + - Add a "set global shader float property" command. + Allow auto-rotation to landscape left? - - - - + - Add a "set global shader matrix property" command. + Allow auto-rotation to landscape right? - - - - + - Add a "set global shader matrix property" command. + Allow auto-rotation to portrait? - - - - + - Add a "set global shader texture property" command. + Allow auto-rotation to portrait, upside down? - - - - + - Add a "set global shader texture property" command. + The current screen resolution (Read Only). - - - - + - Add a "set global shader vector property" command. + The current DPI of the screen / device (Read Only). - - - - + - Add a "set global shader vector property" command. + Is the game running fullscreen? - - - - + - Add a "set active render target" command. + The current height of the screen window in pixels (Read Only). - 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. - + - Add a "set active render target" command. + Should the cursor be locked? - 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. - + - Add a "set active render target" command. + Specifies logical orientation of the screen. - 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. - + - Add a "set active render target" command. + All fullscreen resolutions supported by the monitor (Read Only). - 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. - + - Add a "set active render target" command. + Should the cursor be visible? - 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. - + - Add a "set active render target" command. + A power saving setting, allowing the screen to dim some time after the last active user interaction. - 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. - + - Add a "set active render target" command. + The current width of the screen window in pixels (Read Only). - 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. - + - Add a "set shadow sampling mode" command. + Switches the screen resolution. - Shadowmap render target to change the sampling mode on. - New sampling mode. + + + + - + - Depth or stencil comparison function. + Switches the screen resolution. + + + + - + - Always pass depth or stencil test. + Describes screen orientation. - + - Depth or stencil test is disabled. + Auto-rotates the screen as necessary toward any of the enabled orientations. - + - Pass depth or stencil test when values are equal. + Landscape orientation, counter-clockwise from the portrait orientation. - + - Pass depth or stencil test when new value is greater than old one. + Landscape orientation, clockwise from the portrait orientation. - + - Pass depth or stencil test when new value is greater or equal than old one. + Portrait orientation. - + - Pass depth or stencil test when new value is less than old one. + Portrait orientation, upside down. - + - Pass depth or stencil test when new value is less or equal than old one. + A class you can derive from if you want to create objects that don't need to be attached to game objects. - + - Never pass depth or stencil test. + 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. + - + - Pass depth or stencil test when values are different. + 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. + - + - Backface culling mode. + Creates an instance of a scriptable object. + + The created ScriptableObject. + - + - Cull back-facing geometry. + PreserveAttribute prevents byte code stripping from removing a class, method, field, or property. - + - Cull front-facing geometry. + Webplayer security related class. Not supported from 5.4.0 onwards. - + - Disable culling. + 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. + - + - Default reflection mode. + 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. + - + - Custom default reflection. + 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. - + - Skybox-based default reflection. + 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. - + - Graphics device API type. + Add this attribute to a script class to mark its GameObject as a selection base object for Scene View picking. - + - Direct3D 11 graphics API. + Options for how to send a message. - + - Direct3D 12 graphics API. + No receiver is required for SendMessage. - + - Direct3D 9 graphics API. + A receiver is required for SendMessage. - + - iOS Metal graphics API. + Use this attribute to rename a field without losing its serialized value. - + - Nintendo 3DS graphics API. + The name of the field before the rename. - + - No graphics API. + + The name of the field before renaming. - + - OpenGL 2.x graphics API. + Force Unity to serialize a private field. - + - OpenGL (Core profile - GL3 or later) graphics API. + Shader scripts used for all rendering. - + - OpenGL ES 2.0 graphics API. + Shader LOD level for all shaders. - + - OpenGL ES 3.0 graphics API. + Render pipeline currently in use. - + - PlayStation 3 graphics API. + Shader hardware tier classification for current device. - + - PlayStation 4 graphics API. + Can this shader run on the end-users graphics card? (Read Only) - + - PlayStation Mobile (PSM) graphics API. + Shader LOD level for this shader. - + - PlayStation Vita graphics API. + Render queue of this shader. (Read Only) - + - Xbox 360 graphics API. + Unset a global shader keyword. + - + - Xbox One graphics API. + Set a global shader keyword. + - + - Script interface for. + Finds a shader with the given name. + - + - Get custom shader used instead of a built-in shader. + Gets a global color property for all shaders previously set using SetGlobalColor. - Built-in shader type to query custom shader for. - - The shader used. - + + - + - Get built-in shader mode. + Gets a global color property for all shaders previously set using SetGlobalColor. - Built-in shader type to query. - - Mode used for built-in shader. - + + - + - Set custom shader to use instead of a built-in shader. + Gets a global float property for all shaders previously set using SetGlobalFloat. - Built-in shader type to set custom shader to. - The shader to use. + + - + - Set built-in shader mode. + Gets a global float property for all shaders previously set using SetGlobalFloat. - Built-in shader type to change. - Mode to use for built-in shader. + + - + - Defines a place in light's rendering to attach Rendering.CommandBuffer objects to. + Gets a global float array for all shaders previously set using SetGlobalFloatArray. + + - + - After directional light screenspace shadow mask is computed. + Gets a global float array for all shaders previously set using SetGlobalFloatArray. + + - + - After shadowmap is rendered. + Fetches a global float array into a list. + The list to hold the returned array. + + - + - Before directional light screenspace shadow mask is computed. + Fetches a global float array into a list. + The list to hold the returned array. + + - + - Before shadowmap is rendered. + Gets a global int property for all shaders previously set using SetGlobalInt. + + - + - Opaque object sorting mode of a Camera. + Gets a global int property for all shaders previously set using SetGlobalInt. + + - + - Default opaque sorting mode. + Gets a global matrix property for all shaders previously set using SetGlobalMatrix. + + - + - Do rough front-to-back sorting of opaque objects. + Gets a global matrix property for all shaders previously set using SetGlobalMatrix. + + - + - Do not sort opaque objects by distance. + Gets a global matrix array for all shaders previously set using SetGlobalMatrixArray. + + - + - Shader pass type for Unity's lighting pipeline. + Gets a global matrix array for all shaders previously set using SetGlobalMatrixArray. + + - + - Deferred Shading shader pass. + Fetches a global matrix array into a list. + The list to hold the returned array. + + - + - Forward rendering additive pixel light pass. + Fetches a global matrix array into a list. + The list to hold the returned array. + + - + - Forward rendering base pass. + Gets a global texture property for all shaders previously set using SetGlobalTexture. + + - + - Legacy deferred lighting (light pre-pass) base pass. + Gets a global texture property for all shaders previously set using SetGlobalTexture. + + - + - Legacy deferred lighting (light pre-pass) final pass. + Gets a global vector property for all shaders previously set using SetGlobalVector. + + - + - Shader pass used to generate the albedo and emissive values used as input to lightmapping. + Gets a global vector property for all shaders previously set using SetGlobalVector. + + - + - Regular shader pass that does not interact with lighting. + Gets a global vector array for all shaders previously set using SetGlobalVectorArray. + + - + - Shadow caster & depth texure shader pass. + Gets a global vector array for all shaders previously set using SetGlobalVectorArray. + + - + - Legacy vertex-lit shader pass. + Fetches a global vector array into a list. + The list to hold the returned array. + + - + - Legacy vertex-lit shader pass, with mobile lightmaps. + Fetches a global vector array into a list. + The list to hold the returned array. + + - + - Legacy vertex-lit shader pass, with desktop (RGBM) lightmaps. + Is global shader keyword enabled? + - + - Determines how Unity will compress baked reflection cubemap. + Gets unique identifier for a shader property name. + Shader property name. + + Unique integer for the name. + - + - Baked Reflection cubemap will be compressed if compression format is suitable. + Sets a global compute buffer property for all shaders. + + + - + - Baked Reflection cubemap will be compressed. + Sets a global compute buffer property for all shaders. + + + - + - Baked Reflection cubemap will be left uncompressed. + Sets a global color property for all shaders. + + + - + - ReflectionProbeBlendInfo contains information required for blending probes. + Sets a global color property for all shaders. + + + - + - Reflection Probe used in blending. + Sets a global float property for all shaders. + + + - + - Specifies the weight used in the interpolation between two probes, value varies from 0.0 to 1.0. + Sets a global float property for all shaders. + + + - + - Values for ReflectionProbe.clearFlags, determining what to clear when rendering a ReflectionProbe. + Sets a global float array property for all shaders. + + + - + - Clear with the skybox. + Sets a global float array property for all shaders. + + + - + - Clear with a background color. + Sets a global float array property for all shaders. + + + - + - Reflection probe's update mode. + Sets a global float array property for all shaders. + + + - + - Reflection probe is baked in the Editor. + Sets a global int property for all shaders. + + + - + - Reflection probe uses a custom texture specified by the user. + Sets a global int property for all shaders. + + + - + - Reflection probe is updating in realtime. + Sets a global matrix property for all shaders. + + + - + - An enum describing the way a realtime reflection probe refreshes in the Player. + Sets a global matrix property for all shaders. + + + - + - 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. + Sets a global matrix array property for all shaders. + + + - + - 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 a global matrix array property for all shaders. + + + - + - Using this option indicates that the probe will never be automatically updated by Unity. This is useful if you wish to completely control the probe refresh behavior via scripting. - -See Also: ReflectionProbe.RenderProbe. + Sets a global matrix array property for all shaders. + + + - + - 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. + Sets a global matrix array property for all shaders. + + + - + - 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. + Sets a global texture property for all shaders. + + + - + - 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. + Sets a global texture property for all shaders. + + + - + - Unity will render the probe entirely in one frame. + Sets a global vector property for all shaders. + + + - + - Reflection probe type: cube or card. + Sets a global vector property for all shaders. + + + - + - Surrounding of the reflection probe is rendered onto a quad. + Sets a global vector array property for all shaders. + + + - + - Surrounding of the reflection probe is rendered into cubemap. + Sets a global vector array property for all shaders. + + + - + - Reflection Probe usage. + Sets a global vector array property for all shaders. + + + - + - 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. + Sets a global vector array property for all shaders. + + + - + - Reflection probes are enabled. Blending occurs between probes or probes and default reflection, useful for outdoor environments. + Fully load all shaders to prevent future performance hiccups. - + - Reflection probes are disabled, skybox will be used for reflection. + ShaderVariantCollection records which shader variants are actually used in each shader. - + - Reflection probes are enabled, but no blending will occur between probes when there are two overlapping volumes. + Is this ShaderVariantCollection already warmed up? (Read Only) - + - Handling of loading RenderBuffer contents on setting as active RenderTarget. + Number of shaders in this collection (Read Only). - + - RenderBuffer will try to skip loading its contents on setting as Render Target. + Number of total varians in this collection (Read Only). - + - Make RenderBuffer to Load its contents when setting as RenderTarget. + Adds a new shader variant to the collection. + Shader variant to add. + + False if already in the collection. + - + - Handling of storing RenderBuffer contents after it was an active RenderTarget and another RenderTarget was set. + Remove all shader variants from the collection. - + - RenderBuffer will try to skip storing its contents. + Checks if a shader variant is in the collection. + Shader variant to check. + + True if the variant is in the collection. + - + - Make RenderBuffer to Store its contents. + Create a new empty shader variant collection. - + - Identifies a RenderTexture for a Rendering.CommandBuffer. + Adds shader variant from the collection. + Shader variant to add. + + False if was not in the collection. + - + - Creates a render target identifier. + Identifies a specific variant of a shader. - RenderTexture object to use. - Built-in temporary render texture type. - Temporary render texture name. - Temporary render texture name (as integer, see Shader.PropertyToID). - + - Creates a render target identifier. + Array of shader keywords to use in this variant. - RenderTexture object to use. - Built-in temporary render texture type. - Temporary render texture name. - Temporary render texture name (as integer, see Shader.PropertyToID). - + - Creates a render target identifier. + Pass type to use in this variant. - RenderTexture object to use. - Built-in temporary render texture type. - Temporary render texture name. - Temporary render texture name (as integer, see Shader.PropertyToID). - + - Creates a render target identifier. + Shader to use in this variant. - RenderTexture object to use. - Built-in temporary render texture type. - Temporary render texture name. - Temporary render texture name (as integer, see Shader.PropertyToID). - + - How shadows are cast from this object. + Creates a ShaderVariant structure. + + + - + - No shadows are cast from this object. + Fully load shaders in ShaderVariantCollection. - + - Shadows are cast from this object. + Shadow projection type for. - + - Object casts shadows, but is otherwise invisible in the scene. + Close fit shadow maps with linear fadeout. - + - Shadows are cast from this object, treating it as two-sided. + Stable shadow maps with spherical fadeout. - + - Used by CommandBuffer.SetShadowSamplingMode. + Determines which type of shadows should be used. - + - Default shadow sampling mode: sampling with a comparison filter. + Hard and Soft Shadows. - + - Shadow sampling mode for sampling the depth value. + Disable Shadows. - + - Spherical harmonics up to the second order (3 bands, 9 coefficients). + Hard Shadows Only. - + - Add ambient lighting to probe data. + Default shadow resolution. - - + - Add directional light to probe data. + High shadow map resolution. - - - - + - Clears SH probe to zero. + Low shadow map resolution. - + - Returns true if SH probes are equal. + Medium shadow map resolution. - - - + - Scales SH by a given factor. + Very high shadow map resolution. - - - + - Scales SH by a given factor. + 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. - - - + - Returns true if SH probes are different. + Details of the Transform name mapped to a model's skeleton bone and its default position and rotation in the T-pose. - - - + - Adds two SH probes. + The name of the Transform mapped to the bone. - - - + - Access individual SH coefficients. + The T-pose position of the bone in local space. - + - Specifies the operation that's performed on the stencil buffer when rendering. + The T-pose rotation of the bone in local space. - + - Decrements the current stencil buffer value. Clamps to 0. + The T-pose scaling of the bone in local space. - + - Decrements the current stencil buffer value. Wraps stencil buffer value to the maximum representable unsigned value when decrementing a stencil buffer value of zero. + The Skinned Mesh filter. - + - Increments the current stencil buffer value. Clamps to the maximum representable unsigned value. + The bones used to skin the mesh. - + - Increments the current stencil buffer value. Wraps stencil buffer value to zero when incrementing the maximum representable unsigned value. + AABB of this Skinned Mesh in its local space. - + - Bitwise inverts the current stencil buffer value. + The maximum number of bones affecting a single vertex. - + - Keeps the current stencil value. + The mesh used for skinning. - + - Replace the stencil buffer value with reference value (specified in the shader). + Specifies whether skinned motion vectors should be used for this renderer. - + - Sets the stencil buffer value to zero. + If enabled, the Skinned Mesh will be updated when offscreen. If disabled, this also disables updating animations. - + - Rendering path of a Camera. + Creates a snapshot of SkinnedMeshRenderer and stores it in mesh. + A static mesh that will receive the snapshot of the skinned mesh. - + - Deferred Lighting (Legacy). + Returns weight of BlendShape on this renderer. + - + - Deferred Shading. + Sets the weight in percent of a BlendShape on this Renderer. + The index of the BlendShape to modify. + The weight in percent for this BlendShape. - + - Forward Rendering. + The maximum number of bones affecting a single vertex. - + - Use Player Settings. + Chooses the number of bones from the number current QualitySettings. (Default) - + - Vertex Lit. + Use only 1 bone to deform a single vertex. (The most important bone will be used). - + - RenderMode for the Canvas. + Use 2 bones to deform a single vertex. (The most important bones will be used). - + - Render using the Camera configured on the Canvas. + Use 4 bones to deform a single vertex. - + - Render at the end of the scene using a 2D Canvas. + A script interface for the. - + - Render using any Camera in the scene that can render the layer. + The material used by the skybox. - + - The Render Settings contain values for a range of visual elements in your scene, like fog and ambient light. + Constants for special values of Screen.sleepTimeout. - + - Ambient lighting coming from the sides. + Prevent screen dimming. - + - Ambient lighting coming from below. + Set the sleep timeout to whatever the user has specified in the system settings. - + - How much the light from the Ambient Source affects the scene. + Joint that restricts the motion of a Rigidbody2D object to a single line. - + - Flat ambient lighting color. + The angle of the line in space (in degrees). - + - Ambient lighting mode. + Should the angle be calculated automatically? - + - Custom or skybox ambient lighting data. + The current joint speed. - + - Ambient lighting coming from above. + The current joint translation. - + - Custom specular reflection cubemap. + Restrictions on how far the joint can slide in each direction along the line. - + - Default reflection mode. + Gets the state of the joint limit. - + - Cubemap resolution for default reflection. + Parameters for a motor force that is applied automatically to the Rigibody2D along the line. - + - The fade speed of all flares in the scene. + The angle (in degrees) referenced between the two bodies used as the constraint for the joint. - + - The intensity of all flares in the scene. + Should motion limits be used? - + - Is fog enabled? + Should a motor force be applied automatically to the Rigidbody2D? - + - The color of the fog. + Gets the motor force of the joint given the specified timestep. + The time to calculate the motor force for. - + - The density of the exponential fog. + Generic access to the Social API. - + - The ending distance of linear fog. + The local user (potentially not logged in). - + - Fog mode to use. + This is the currently active social platform. - + - The starting distance of linear fog. + Create an IAchievement instance. - + - Size of the Light halos. + Create an ILeaderboard instance. - + - The number of times a reflection includes other reflections. + Loads the achievement descriptions accociated with this application. + - + - How much the skybox / custom cubemap reflection affects the scene. + Load the achievements the logged in user has already achieved or reported progress on. + - + - The global skybox to use. + Load a default set of scores from the given leaderboard. + + - + - Fully describes setup of RenderTarget. + Load the user profiles accociated with the given array of user IDs. + + - + - Color Buffers to set. + Reports the progress of an achievement. + + + - + - Load Actions for Color Buffers. It will override any actions set on RenderBuffers themselves. + Report a score to a specific leaderboard. + + + - + - Store Actions for Color Buffers. It will override any actions set on RenderBuffers themselves. + Show a default/system view of the games achievements. - + - Cubemap face to render to. + Show a default/system view of the games leaderboards. - + - Depth Buffer to set. + iOS GameCenter implementation for network services. - + - Load Action for Depth Buffer. It will override any actions set on RenderBuffer itself. + Reset all the achievements for the local user. + - + - Store Actions for Depth Buffer. It will override any actions set on RenderBuffer itself. + Show the default iOS banner when achievements are completed. + - + - Mip Level to render to. + Show the leaderboard UI with a specific leaderboard shown initially with a specific time scope selected. + + - + - Constructs RenderTargetSetup. + Information for a user's achievement. - Color Buffer(s) to set. - Depth Buffer to set. - Mip Level to render to. - Cubemap face to render to. - - + - Constructs RenderTargetSetup. + Set to true when percentCompleted is 100.0. - Color Buffer(s) to set. - Depth Buffer to set. - Mip Level to render to. - Cubemap face to render to. - - + - Constructs RenderTargetSetup. + This achievement is currently hidden from the user. - Color Buffer(s) to set. - Depth Buffer to set. - Mip Level to render to. - Cubemap face to render to. - - + - Constructs RenderTargetSetup. + The unique identifier of this achievement. - Color Buffer(s) to set. - Depth Buffer to set. - Mip Level to render to. - Cubemap face to render to. - - + - Constructs RenderTargetSetup. + Set by server when percentCompleted is updated. - Color Buffer(s) to set. - Depth Buffer to set. - Mip Level to render to. - Cubemap face to render to. - - + - Constructs RenderTargetSetup. + Progress for this achievement. - 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. + Send notification about progress on this achievement. + - + - Currently active render texture. + Static data describing an achievement. - + - The antialiasing level for the RenderTexture. + Description when the achivement is completed. - + - Color buffer of the render texture (Read Only). + Hidden achievement are not shown in the list until the percentCompleted has been touched (even if it's 0.0). - + - The precision of the render texture's depth buffer in bits (0, 16, 24 are supported). + Unique identifier for this achievement description. - + - Depth/stencil buffer of the render texture (Read Only). + Image representation of the achievement. - + - Enable random access write into this render texture on Shader Model 5.0 level shaders. + Point value of this achievement. - + - The color format of the render texture. + Human readable title. - + - Should mipmap levels be generated automatically? + Description when the achivement has not been completed. - + - The height of the render texture in pixels. + The leaderboard contains the scores of all players for a particular game. - + - If enabled, this Render Texture will be used as a Cubemap. + Unique identifier for this leaderboard. - + - If enabled, this Render Texture will be used as a Texture3D. + The leaderboad is in the process of loading scores. - + - Does this render texture use sRGB read/write conversions (Read Only). + The leaderboard score of the logged in user. - + - Use mipmaps on a render texture? + The total amount of scores the leaderboard contains. - + - Volume extent of a 3D render texture. + The rank range this leaderboard returns. - + - The width of the render texture in pixels. + The leaderboard scores returned by a query. - + - Actually creates the RenderTexture. + The time period/scope searched by this leaderboard. - + - Creates a new RenderTexture object. + The human readable title of this leaderboard. - 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. - + - Creates a new RenderTexture object. + The users scope searched by this leaderboard. - 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. - + - Creates a new RenderTexture object. + Load scores according to the filters set on this leaderboard. - 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. + - + - Discards the contents of the RenderTexture. + Only search for these user IDs. - Should the colour buffer be discarded? - Should the depth buffer be discarded? + List of user ids. - + - Discards the contents of the RenderTexture. + Represents the local or currently logged in user. - Should the colour buffer be discarded? - Should the depth buffer be discarded? - + - Allocate a temporary render texture. + Checks if the current user has been authenticated. - 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. - Anti-aliasing (1,2,4,8). - + - Is the render texture actually created? + The users friends list. - + - Indicate that there's a RenderTexture restore operation expected. + Is the user underage? - + - Releases the RenderTexture. + 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. - + - Release a temporary texture allocated with GetTemporary. + 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. - + - Assigns this RenderTexture as a global shader property named propertyName. + 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. - + - + - Does a RenderTexture have stencil buffer? + A game score. - Render texture, or null for main screen. - + - Format of a RenderTexture. + The date the score was achieved. - + - Color render texture format, 1 bit for Alpha channel, 5 bits for Red, Green and Blue channels. + The correctly formatted value of the score, like X points or X kills. - + - Color render texture format. 10 bits for colors, 2 bits for alpha. + The ID of the leaderboard this score belongs to. - + - Color render texture format, 8 bits per channel. + The rank or position of the score in the leaderboard. - + - Color render texture format, 4 bit per channel. + The user who owns this score. - + - Color render texture format, 32 bit floating point per channel. + The score value achieved. - + - Color render texture format, 16 bit floating point per channel. + Report this score instance. + - + - Four channel (ARGB) render texture format, 32 bit signed integer per channel. + The generic Social API interface which implementations must inherit. - + - Default color render texture format: will be chosen accordingly to Frame Buffer format and Platform. + See Social.localUser. - + - Default HDR color render texture format: will be chosen accordingly to Frame Buffer format and Platform. + See Social.CreateAchievement.. - + - A depth render texture format. + See Social.CreateLeaderboard. - + - Scalar (R) render texture format, 8 bit fixed point. + See Social.LoadAchievementDescriptions. + - + - Scalar (R) render texture format, 32 bit floating point. + See Social.LoadAchievements. + - + - Color render texture format. + See Social.LoadScores. + + + - + - Two color (RG) render texture format, 32 bit floating point per channel. + See Social.LoadScores. + + + - + - Two color (RG) render texture format, 16 bit floating point per channel. + See Social.LoadUsers. + + - + - Two channel (RG) render texture format, 32 bit signed integer per channel. + See Social.ReportProgress. + + + - + - Scalar (R) render texture format, 16 bit floating point. + See Social.ReportScore. + + + - + - Scalar (R) render texture format, 32 bit signed integer. + See Social.ShowAchievementsUI. - + - A native shadowmap render texture format. + See Social.ShowLeaderboardUI. - + - Color space conversion mode of a RenderTexture. + Represents generic user instances, like friends of the local user. - + - Render texture contains sRGB (color) data, perform Linear<->sRGB conversions on it. + This users unique identifier. - + - Default color space conversion based on project settings. + Avatar image of the user. - + - Render texture contains linear (non-color) data; don't perform color conversions on it. + Is this user a friend of the current logged in user? - + - The RequireComponent attribute lets automatically add required component as a dependency. + Presence state of the user. - + - Require a single component. + This user's username or alias. - - + - Require a two components. + The score range a leaderboard query should include. - - - + - Require three components. + The total amount of scores retreived. - - - - + - Represents a display resolution. + The rank of the first score which is returned. - + - Resolution height in pixels. + 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. - + - Resolution's vertical refresh rate in Hz. + The scope of time searched through when querying the leaderboard. - + - Resolution width in pixels. + The scope of the users searched through when querying the leaderboard. - + - Returns a nicely formatted string of the resolution. + User presence state. - - A string with the format "width x height @ refreshRateHz". - - + - Asynchronous load request from the Resources bundle. + The user is offline. - + - Asset object being loaded (Read Only). + The user is online. - + - The Resources class allows you to find and access Objects including assets. + The user is online but away from their computer. - + - Returns a list of all objects of Type type. + The user is online but set their status to busy. - 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. + The user is playing a game. - + - Loads an asset stored at path in a Resources folder. + The limits defined by the CharacterJoint. - 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 an asset stored at path in a Resources folder. + When the joint hits the limit, it can be made to bounce off it. - 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 an asset stored at path in a Resources folder. + Determines how far ahead in space the solver can "see" the joint limit. - Pathname of the target folder. When using the empty string (i.e., ""), the function will load the entire contents of the Resources folder. - + - Loads all assets in a folder or file at path in a Resources folder. + If spring is greater than zero, the limit is soft. - 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. + The limit position/angle of the joint (in degrees). - 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. + If greater than zero, the limit is soft. The spring will pull the joint back. - 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). + The configuration of the spring attached to the joint's limits: linear and angular. Used by CharacterJoint and ConfigurableJoint. - Pathname of the target asset. - Type filter for objects returned. - + - Returns a resource at an asset path (Editor Only). + The damping of the spring limit. In effect when the stiffness of the sprint limit is not zero. - Pathname of the target asset. - + - Asynchronously loads an asset stored at path in a Resources folder. + The stiffness of the spring limit. When stiffness is zero the limit is hard, otherwise soft. - 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. + 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. - 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. + 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. - 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. + Returns all the layers defined in this project. - - + - Unloads assets that are not used. + Returns the name of the layer as defined in the TagManager. - - Object on which you can yield to wait until the operation completes. - - + - Control of an object's position through physics simulation. + This is the relative value that indicates the sort order of this layer relative to the other layers. - + - The angular drag of the object. + 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. + - + - The angular velocity vector of the rigidbody. + 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. + - + - The center of mass relative to the transform's origin. + 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. + - + - The Rigidbody's collision detection mode. + 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. + - + - Controls which degrees of freedom are allowed for the simulation of this Rigidbody. + 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. + - + - Should collision detection be enabled? (By default always enabled). + The coordinate space in which to operate. - + - The drag of the object. + Applies transformation relative to the local coordinate system. - + - Controls whether physics will change the rotation of the object. + Applies transformation relative to the world coordinate system. - + - The diagonal inertia tensor of mass relative to the center of mass. + Use this PropertyAttribute to add some spacing in the Inspector. - + - The rotation of the inertia tensor. + The spacing in pixels. - + - Interpolation allows you to smooth out the effect of running physics at a fixed frame rate. + Use this DecoratorDrawer to add some spacing in the Inspector. + The spacing in pixels. - + - Controls whether physics affects the rigidbody. + Class for handling Sparse Textures. - + - The mass of the rigidbody. + Is the sparse texture actually created? (Read Only) - + - The maximimum angular velocity of the rigidbody. (Default 7) range { 0, infinity }. + Get sparse texture tile height (Read Only). - + - Maximum velocity of a rigidbody when moving out of penetrating state. + Get sparse texture tile width (Read Only). - + - The position of the rigidbody. + 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). - + - The rotation of the rigdibody. + 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). - + - The angular velocity below which objects start going to sleep. (Default 0.14) range { 0, infinity }. + Unload sparse texture tile. + Tile X coordinate. + Tile Y coordinate. + Mipmap level of the texture. - + - The mass-normalized energy threshold, below which objects start going to sleep. + Update sparse texture tile with color values. + Tile X coordinate. + Tile Y coordinate. + Mipmap level of the texture. + Tile color data. - + - The linear velocity below which objects start going to sleep. (Default 0.14) range { 0, infinity }. + Update sparse texture tile with raw pixel values. + Tile X coordinate. + Tile Y coordinate. + Mipmap level of the texture. + Tile raw pixel data. - + - Allows you to override the solver iteration count per rigidbody. + A sphere-shaped primitive collider. - + - Force cone friction to be used for this rigidbody. + The center of the sphere in the object's local space. - + - Controls whether gravity affects this rigidbody. + The radius of the sphere measured in the object's local space. - + - The velocity vector of the rigidbody. + A Splat prototype is just a texture that is used by the TerrainData. - + - The center of mass of the rigidbody in world space (Read Only). + The metallic value of the splat layer. - + - Applies a force to a rigidbody that simulates explosion effects. + Normal map of the splat applied to the Terrain. - 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 smoothness value of the splat layer when the main texture has no alpha channel. - 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. + Texture of the splat applied to the Terrain. - 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. + Offset of the tile texture of the SplatPrototype. - Force vector in world coordinates. - - + - Adds a force to the rigidbody. + Size of the tile used in the texture of the SplatPrototype. - Force vector in world coordinates. - - + - Adds a force to the rigidbody. + The spring joint ties together 2 rigid bodies, spring forces will be automatically applied to keep the object at the given distance. - Size of force along the world x-axis. - Size of force along the world y-axis. - Size of force along the world z-axis. - - + - Adds a force to the rigidbody. + The damper force used to dampen the spring force. - Size of force along the world x-axis. - Size of force along the world y-axis. - Size of force along the world z-axis. - - + - Applies force at position. As a result this will apply a torque and force on the object. + The maximum distance between the bodies relative to their initial distance. - 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. + The minimum distance between the bodies relative to their initial distance. - Force vector in world coordinates. - Position in world coordinates. - - + - Adds a force to the rigidbody relative to its coordinate system. + The spring force used to keep the two objects together. - Force vector in local coordinates. - - + - Adds a force to the rigidbody relative to its coordinate system. + The maximum allowed error between the current spring length and the length defined by minDistance and maxDistance. - Force vector in local coordinates. - - + - Adds a force to the rigidbody relative to its coordinate system. + Joint that attempts to keep two Rigidbody2D objects a set distance apart by applying a force between them. - 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. + Should the distance be calculated automatically? - 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. + The amount by which the spring force is reduced in proportion to the movement speed. - Torque vector in local coordinates. - - + - Adds a torque to the rigidbody relative to its coordinate system. + The distance the spring will try to keep between the two objects. - Torque vector in local coordinates. - - + - Adds a torque to the rigidbody relative to its coordinate system. + The frequency at which the spring oscillates around the distance distance between the objects. - 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. + Represents a Sprite object for use in 2D gameplay. - 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. + 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. - Torque vector in world coordinates. - - + - Adds a torque to the rigidbody. + Returns the border sizes of the sprite. - Torque vector in world coordinates. - - + - Adds a torque to the rigidbody. + Bounds of the Sprite, specified by its center and extents in world space units. - 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. + Returns true if this Sprite is packed in an atlas. - 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. + If Sprite is packed (see Sprite.packed), returns its SpritePackingMode. - - + - The velocity of the rigidbody at the point worldPoint in global space. + If Sprite is packed (see Sprite.packed), returns its SpritePackingRotation. - - + - The velocity relative to the rigidbody at the point relativePoint. + Location of the Sprite's center point in the Rect on the original Texture, specified in pixels. - - + - Is the rigidbody sleeping? + The number of pixels in the sprite that correspond to one unit in world space. (Read Only) - + - Moves the rigidbody to position. + Location of the Sprite on the original Texture, specified in pixels. - The new position for the Rigidbody object. - + - Rotates the rigidbody to rotation. + Get the reference to the used texture. If packed this will point to the atlas, if not packed will point to the source sprite. - The new rotation for the Rigidbody. - + - Reset the center of mass of the rigidbody. + Get the rectangle this sprite uses on its texture. Raises an exception if this sprite is tightly packed in an atlas. - + - Reset the inertia tensor value and rotation. + 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. - + - Sets the mass based on the attached colliders assuming a constant density. + Returns a copy of the array containing sprite mesh triangles. - - + - Forces a rigidbody to sleep at least one frame. + The base texture coordinates of the sprite mesh. - + - Tests if a rigidbody would collide with anything, if it was moved through the scene. + Returns a copy of the array containing sprite mesh vertex positions. - 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. + Create a new Sprite object. - 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. - + 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). - + - Forces a rigidbody to wake up. + Sets up new Sprite geometry. + Array of vertex positions in Sprite Rect space. + Array of sprite mesh triangle indices. - + - Rigidbody physics component for 2D sprites. + How a Sprite's graphic rectangle is aligned with its pivot point. - + - Coefficient of angular drag. + Pivot is at the center of the bottom edge of the graphic rectangle. - + - Angular velocity in degrees per second. + Pivot is at the bottom left corner of the graphic rectangle. - + - The center of mass of the rigidBody in local space. + Pivot is at the bottom right corner of the graphic rectangle. - + - The method used by the physics engine to check if two objects have collided. + Pivot is at the center of the graphic rectangle. - + - Controls which degrees of freedom are allowed for the simulation of this Rigidbody2D. + Pivot is at a custom position within the graphic rectangle. - + - Coefficient of drag. + Pivot is at the center of the left edge of the graphic rectangle. - + - Should the rigidbody be prevented from rotating? + Pivot is at the center of the right edge of the graphic rectangle. - + - Controls whether physics will change the rotation of the object. + Pivot is at the center of the top edge of the graphic rectangle. - + - The degree to which this object is affected by gravity. + Pivot is at the top left corner of the graphic rectangle. - + - The rigidBody rotational inertia. + Pivot is at the top right corner of the graphic rectangle. - + - Physics interpolation used between updates. + SpriteRenderer draw mode. - + - Should this rigidbody be taken out of physics control? + Displays the full sprite. - + - Mass of the rigidbody. + The SpriteRenderer will render the sprite as a 9-slice image where the corners will remain constant and the other sections will scale. - + - The position of the rigidbody. + The SpriteRenderer will render the sprite as a 9-slice image where the corners will remain constant and the other sections will tile. - + - The rotation of the rigdibody. + Defines the type of mesh generated for a sprite. - + - Indicates whether the rigid body should be simulated or not by the physics system. + Rectangle mesh equal to the user specified sprite size. - + - The sleep state that the rigidbody will initially be in. + Tight mesh based on pixel alpha values. As many excess pixels are cropped as possible. - + - Should the total rigid-body mass be automatically calculated from the Collider2D.density of attached colliders? + Sprite packing modes for the Sprite Packer. - + - Linear velocity of the rigidbody. + Alpha-cropped ractangle packing. - + - Gets the center of mass of the rigidBody in global space. + Tight mesh based packing. - + - Apply a force to the rigidbody. + Sprite rotation modes for the Sprite Packer. - 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. + Any rotation. - 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. + No rotation. - 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. + Renders a Sprite for 2D graphics. - Torque to apply. - The force mode to use. - + - Get a local space point given the point point in rigidBody global space. + The current threshold for Sprite Renderer tiling. - The global space point to transform into local space. - + - The velocity of the rigidbody at the point Point in global space. + Rendering color for the Sprite graphic. - The global space point to calculate velocity for. - + - Get a global space point given the point relativePoint in rigidBody local space. + The current draw mode of the Sprite Renderer. - The local space point to transform into global space. - + - The velocity of the rigidbody at the point Point in local space. + Flips the sprite on the X axis. - The local space point to calculate velocity for. - + - Get a global space vector given the vector relativeVector in rigidBody local space. + Flips the sprite on the Y axis. - The local space vector to transform into a global space vector. - + - Get a local space vector given the vector vector in rigidBody global space. + Property to set/get the size to render when the SpriteRenderer.drawMode is set to SpriteDrawMode.NineSlice. - The global space vector to transform into a local space vector. - + - Is the rigidbody "awake"? + The Sprite to render. - + - Is the rigidbody "sleeping"? + The current tile mode of the Sprite Renderer. - + - Check whether any of the collider(s) attached to this rigidbody are touching the collider or not. + Helper utilities for accessing Sprite data. - 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 any of the collider(s) attached to this rigidbody are touching any colliders on the specified layerMask or not. + Inner UV's of the Sprite. - 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. + Minimum width and height of the Sprite. - The new position for the Rigidbody object. + - + - Rotates the rigidbody to angle (given in degrees). + Outer UV's of the Sprite. - The new rotation angle for the Rigidbody object. + - + - Make the rigidbody "sleep". + Return the padding on the sprite. + - + - Disables the "sleeping" state of a rigidbody. + Tiling mode for SpriteRenderer.tileMode. - + - Use these flags to constrain motion of Rigidbodies. + Sprite Renderer tiles the sprite once the Sprite Renderer size is above SpriteRenderer.adaptiveModeThreshold. - + - Freeze rotation and motion along all axes. + Sprite Renderer tiles the sprite continuously when is set to SpriteRenderer.tileMode. - + - Freeze motion along all axes. + Stack trace logging options. - + - Freeze motion along the X-axis. + Native and managed stack trace will be logged. - + - Freeze motion along the Y-axis. + No stack trace will be outputed to log. - + - Freeze motion along the Z-axis. + Only managed stack trace will be outputed. - + - Freeze rotation along all axes. + 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. - + - Freeze rotation along the X-axis. + Called on the first Update frame when a statemachine evaluate this state. - + - Freeze rotation along the Y-axis. + Called on the last update frame when a statemachine evaluate this state. - + - Freeze rotation along the Z-axis. + Called right after MonoBehaviour.OnAnimatorIK. - + - No constraints. + Called on the first Update frame when making a transition to 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. - + - Use these flags to constrain motion of the Rigidbody2D. + 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. - + - Freeze rotation and motion along all axes. + Called right after MonoBehaviour.OnAnimatorMove. - + - Freeze motion along the X-axis and Y-axis. + Called at each Update frame except for the first and last frame. - + - Freeze motion along the X-axis. + StaticBatchingUtility can prepare your objects to take advantage of Unity's static batching. - + - Freeze motion along the Y-axis. + StaticBatchingUtility.Combine prepares all children of the staticBatchRoot for static batching. + - + - Freeze rotation along the Z-axis. + StaticBatchingUtility.Combine prepares all gos for static batching. staticBatchRoot is treated as their parent. + + - + - No constraints. + Enum values for the Camera's targetEye property. - + - Rigidbody interpolation mode. + Render both eyes to the HMD. - + - Extrapolation will predict the position of the rigidbody based on the current velocity. + Render only the Left eye to the HMD. - + - Interpolation will always lag a little bit behind but can be smoother than extrapolation. + Do not render either eye to the HMD. - + - No Interpolation. + Render only the right eye to the HMD. - + - Interpolation mode for Rigidbody2D objects. + Applies tangent forces along the surfaces of colliders. - + - Smooth an object's movement based on an estimate of its position in the next frame. + The scale of the impulse force applied while attempting to reach the surface speed. - + - Smooth movement based on the object's positions in previous frames. + The speed to be maintained along the surface. - + - Do not apply any smoothing to the object's movement. + The speed variation (from zero to the variation) added to base speed to be applied. - + - Settings for a Rigidbody2D's initial sleep state. + Should bounce be used for any contact with the surface? - + - Rigidbody2D never automatically sleeps. + Should the impulse force but applied to the contact point? - + - Rigidbody2D is initially asleep. + Should friction be used for any contact with the surface? - + - Rigidbody2D is initially awake. + Access system and hardware information. - + - Control ConfigurableJoint's rotation with either X & YZ or Slerp Drive. + The current battery level (Read Only). - + - Use Slerp drive. + Returns the current status of the device's battery (Read Only). - + - Use XY & Z Drive. + Support for various Graphics.CopyTexture cases (Read Only). - + - Attribute for setting up RPC functions. + The model of the device (Read Only). - + - Option for who will receive an RPC, used by NetworkView.RPC. + The user defined name of the device (Read Only). - + - Sends to everyone. + Returns the kind of device the application is running on (Read Only). - + - Sends to everyone and adds to the buffer. + A unique device identifier. It is guaranteed to be unique for every device (Read Only). - + - Sends to everyone except the sender. + The identifier code of the graphics device (Read Only). - + - Sends to everyone except the sender and adds to the buffer. + The name of the graphics device (Read Only). - + - Sends to the server only. + The graphics API type used by the graphics device (Read Only). - + - Runtime representation of the AnimatorController. It can be used to change the Animator's controller during runtime. + The vendor of the graphics device (Read Only). - + - Retrieves all AnimationClip used by the controller. + The identifier code of the graphics device vendor (Read Only). - + - Set RuntimeInitializeOnLoadMethod type. + The graphics API type and driver version used by the graphics device (Read Only). - + - After scene is loaded. + Amount of video memory present (Read Only). - + - Before scene is loaded. + Is graphics device using multi-threaded rendering (Read Only)? - + - Allow an runtime class method to be initialized when Unity game loads runtime without action from the user. + Graphics device shader capability level (Read Only). - + - Set RuntimeInitializeOnLoadMethod type. + Returns true if the texture UV coordinate convention for this platform has Y starting at the top of the image. - + - Allow an runtime class method to be initialized when Unity game loads runtime without action from the user. + Maximum Cubemap texture size (Read Only). - RuntimeInitializeLoadType: Before or After scene is loaded. - + - Allow an runtime class method to be initialized when Unity game loads runtime without action from the user. + Maximum texture size (Read Only). - RuntimeInitializeLoadType: Before or After scene is loaded. - + - The platform application is running. Returned by Application.platform. + What NPOT (non-power of two size) texture support does the GPU provide? (Read Only) - + - In the player on the Apple's tvOS. + Operating system name with version (Read Only). - + - In the player on Android devices. + Returns the operating system family the game is running on (Read Only). - + - In the player on the iPhone. + Number of processors present (Read Only). - + - In the player on Linux. + Processor frequency in MHz (Read Only). - + - In the Dashboard widget on Mac OS X. + Processor name (Read Only). - + - In the Unity editor on Mac OS X. + How many simultaneous render targets (MRTs) are supported? (Read Only) - + - In the player on Mac OS X. + Are 2D Array textures supported? (Read Only) - + - In the web player on Mac OS X. + Are 3D (volume) RenderTextures supported? (Read Only) - + - In the player on the Play Station 3. + Are 3D (volume) textures supported? (Read Only) - + - In the player on the Playstation 4. + Is an accelerometer available on the device? - + - In the player on the PS Vita. + Is there an Audio device available for playback? - + - In the player on Samsung Smart TV. + Are compute shaders supported? (Read Only) - + - In the player on Tizen. + Are Cubemap Array textures supported? (Read Only) - + - In the player on WebGL? + Is a gyroscope available on the device? - + - In the player on Wii U. + Are image effects supported? (Read Only) - + - In the Unity editor on Windows. + Is GPU draw call instancing supported? (Read Only) - + - In the player on Windows. + Is the device capable of reporting its location? - + - In the web player on Windows. + Whether motion vectors are supported on this platform. - + - In the player on Windows Store Apps when CPU architecture is ARM. + Is sampling raw depth from shadowmaps supported? (Read Only) - + - In the player on Windows Store Apps when CPU architecture is X64. + Are render textures supported? (Read Only) - + - In the player on Windows Store Apps when CPU architecture is X86. + Are cubemap render textures supported? (Read Only) - + - In the player on the XBOX360. + Are built-in shadows supported? (Read Only) - + - In the player on Xbox One. + Are sparse textures supported? (Read Only) - + - Interface into SamsungTV specific functionality. + Is the stencil buffer supported? (Read Only) - + - Returns true if there is an air mouse available. + Is the device capable of providing the user haptic feedback by vibration? - + - Changes the type of input the gamepad produces. + Amount of system memory present (Read Only). - + - Changes the type of input the gesture camera produces. + Value returned by SystemInfo string properties which are not supported on the current platform. - + - Returns true if the camera sees a hand. + 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) - + - The type of input the remote's touch pad produces. + Is render texture format supported? + The format to look up. + + True if the format is supported. + - + - Types of input the gamepad can produce. + Is texture format supported on this device? + The TextureFormat format to look up. + + True if the format is supported. + - + - Joystick style input. + The language the user's operating system is running in. Returned by Application.systemLanguage. - + - Mouse style input. + Afrikaans. - + - Types of input the gesture camera can produce. + Arabic. - + - Two hands control two joystick axes. + Basque. - + - Hands control the mouse pointer. + Belarusian. - + - No gesture input from the camera. + Bulgarian. - + - Access to TV specific information. + Catalan. - + - The server type. Possible values: -Developing, Development, Invalid, Operating. + Chinese. - + - Get local time on TV. + ChineseSimplified. - + - Get UID from TV. + ChineseTraditional. - + - Set the system language that is returned by Application.SystemLanguage. + Czech. - - + - Types of input the remote's touchpad can produce. + Danish. - + - Remote dependent. On 2013 TVs dpad directions are determined by swiping in the correlating direction. On 2014 and 2015 TVs the remote has dpad buttons. + Dutch. - + - Touchpad works like an analog joystick. Not supported on the 2015 TV as there is no touchpad. + English. - + - Touchpad controls a remote curosr like a laptop's touchpad. This can be replaced by airmouse functionality which is available on 2014 and 2015 TVs. + Estonian. - + - Scaling mode to draw textures with. + Faroese. - + - 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. + Finnish. - + - Scales the texture, maintaining aspect ratio, so it completely fits withing the position rectangle passed to GUI.DrawTexture. + French. - + - Stretches the texture to fill the complete rectangle passed in to GUI.DrawTexture. + German. - + - Used when loading a scene in a player. + Greek. - + - Adds the scene to the current loaded scenes. + Hebrew. - + - Closes all current loaded scenes and loads a scene. + Hungarian. - + - Run-time data structure for *.unity file. + Icelandic. - + - Returns the index of the scene in the Build Settings. Always returns -1 if the scene was loaded through an AssetBundle. + Indonesian. - + - Returns true if the scene is modifed. + Italian. - + - Returns true if the scene is loaded. + Japanese. - + - Returns the name of the scene. + Korean. - + - Returns the relative path of the scene. Like: "AssetsMyScenesMyScene.unity". + Latvian. - + - The number of root transforms of this scene. + Lithuanian. - + - Returns all the root game objects in the scene. + Norwegian. - - An array of game objects. - - + - Returns all the root game objects in the scene. + Polish. - A list which is used to return the root game objects. - + - Tells if the scene is valid. -A scene can be invalid if you eg. tried to open a scene that does not exists in that case the scene returnen from EditorSceneManager.OpenScene would be invalid. + Portuguese. - - Returns true if the scene is valid. - - + - Returns true if the Scenes are equal. + Romanian. - - - + - Returns true if the Scenes are different. + Russian. - - - + - Scene management at run-time. + Serbo-Croatian. - + - The total number of scenes. + Slovak. - + - Number of scenes in Build Settings. + Slovenian. - + - Create an empty new scene with the given name additively. + Spanish. - The name of the new scene. It cannot be empty or null, or same as the name of the existing scenes. - + - Get the active scene. + Swedish. - + - Get the scene at index in the SceneManager's list of added scenes. + Thai. - Index of the scene to get. Index must be greater than or equal to 0 and less than SceneManager.sceneCount. - + - Searches through the scenes added to the SceneManager for a scene with the given name. + Turkish. - Name of scene to find. - - The scene if found or an invalid scene if not. - - + - Searches all scenes added to the SceneManager for a scene that has the given asset path. + Ukrainian. - Path of the scene. Should be relative to the project folder. Like: "AssetsMyScenesMyScene.unity". - + - Loads the scene by its name or index in Build Settings. + Unknown. - Name 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. + Vietnamese. - Name 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 asynchronously in the background. + The joint attempts to move a Rigidbody2D to a specific target position. - Name 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. - + - Loads the scene asynchronously in the background. + The local-space anchor on the rigid-body the joint is attached to. - Name 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. - + - This will merge the source scene into the destinationScene. -This function merges the contents of the source scene into the destination scene, and deletes the source scene. All GameObjects at the root of the source scene are moved to the root of the destination scene. -NOTE: This function is destructive: The source scene will be destroyed once the merge has been completed. + Should the target be calculated automatically? - 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. -It is required that the GameObject is at the root of its current scene. + The amount by which the target spring force is reduced in proportion to the movement speed. - GameObject to move. - Scene to move into. - + - Set the scene to be active. + 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 scene to be set. - - Returns false if the scene is not loaded yet. - - + - Unloads all GameObjects associated with the given scene. + The world-space position that the joint will attempt to move the body to. - Index of the scene in the Build Settings to unload. - Name of the scene to unload. - Scene to unload. - - Returns true if the scene is unloaded. - - + - Unloads all GameObjects associated with the given scene. + The Terrain component renders the terrain. - Index of the scene in the Build Settings to unload. - Name of the scene to unload. - Scene to unload. - - Returns true if the scene is unloaded. - - + - Unloads all GameObjects associated with the given scene. + The active terrain. This is a convenience function to get to the main terrain in the scene. - Index of the scene in the Build Settings to unload. - Name of the scene to unload. - Scene to unload. - - Returns true if the scene is unloaded. - - + - Access to display information. + The active terrains in the scene. - + - Allow auto-rotation to landscape left? + Specifies if an array of internal light probes should be baked for terrain trees. Available only in editor. - + - Allow auto-rotation to landscape right? + Heightmap patches beyond basemap distance will use a precomputed low res basemap. - + - Allow auto-rotation to portrait? + Should terrain cast shadows?. - + - Allow auto-rotation to portrait, upside down? + Collect detail patches from memory. - + - The current screen resolution (Read Only). + Density of detail objects. - + - The current DPI of the screen / device (Read Only). + Detail objects will be displayed up to this distance. - + - Is the game running fullscreen? + Specify if terrain heightmap should be drawn. - + - The current height of the screen window in pixels (Read Only). + Specify if terrain trees and details should be drawn. - + - Should the cursor be locked? + Controls what part of the terrain should be rendered. - + - Specifies logical orientation of the screen. + Lets you essentially lower the heightmap resolution used for rendering. - + - All fullscreen resolutions supported by the monitor (Read Only). + An approximation of how many pixels the terrain will pop in the worst case when switching lod. - + - Should the cursor be visible? + The shininess value of the terrain. - + - A power saving setting, allowing the screen to dim some time after the last active user interaction. + The specular color of the terrain. - + - The current width of the screen window in pixels (Read Only). + The index of the baked lightmap applied to this terrain. - + - Switches the screen resolution. + The UV scale & offset used for a baked lightmap. - - - - - + - Switches the screen resolution. + The custom material used to render the terrain. - - - - - + - Describes screen orientation. + The type of the material used to render the terrain. Could be one of the built-in types or custom. See Terrain.MaterialType. - + - Auto-rotates the screen as necessary toward any of the enabled orientations. + The index of the realtime lightmap applied to this terrain. - + - Landscape orientation, counter-clockwise from the portrait orientation. + The UV scale & offset used for a realtime lightmap. - + - Landscape orientation, clockwise from the portrait orientation. + How reflection probes are used for terrain. See Rendering.ReflectionProbeUsage. - + - Portrait orientation. + The Terrain Data that stores heightmaps, terrain textures, detail meshes and trees. - + - Portrait orientation, upside down. + Distance from the camera where trees will be rendered as billboards only. - + - A class you can derive from if you want to create objects that don't need to be attached to game objects. + Total distance delta that trees will use to transition from billboard orientation to mesh orientation. - + - Creates an instance of a scriptable object. + The maximum distance at which trees are rendered. - 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 multiplier to the current LOD bias used for rendering LOD trees (i.e. SpeedTree trees). - 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. + Maximum number of trees rendered at full LOD. - 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. - - + - PreserveAttribute prevents byte code stripping from removing a class, method, field, or property. + Adds a tree instance to the terrain. + - + - Webplayer security related class. + Update the terrain's LOD and vegetation information after making changes with TerrainData.SetHeightsDelayLOD. - + - Get secret from Chain of Trust system. + Creates a Terrain including collider from TerrainData. - The name of the secret. - - The secret. - + - + - Loads an assembly and checks that it is allowed to be used in the webplayer. -Note: The single argument version of this API will always issue an error message. An authorisation key is always needed. + Flushes any change done in the terrain so it takes effect. - 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. -Note: The single argument version of this API will always issue an error message. An authorisation key is always needed. + 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. - Assembly to verify. - Public key used to verify assembly. - - Loaded, verified, assembly, or null if the assembly cannot be verfied. - + [in / out] A list to hold the returned reflection probes and their weights. See ReflectionProbeBlendInfo. - + - Prefetch the webplayer socket security policy from a non-default port number. + Get the position of the terrain. - 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. + Get the previously set splat material properties by copying to the dest MaterialPropertyBlock object. - 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. + The type of the material used to render a terrain object. Could be one of the built-in types or custom. - + - Options for how to send a message. + A built-in material that uses the legacy Lambert (diffuse) lighting model and has optional normal map support. - + - No receiver is required for SendMessage. + A built-in material that uses the legacy BlinnPhong (specular) lighting model and has optional normal map support. - + - A receiver is required for SendMessage. + A built-in material that uses the standard physically-based lighting model. Inputs supported: smoothness, metallic / specular, normal. - + - Use this attribute to rename a field without losing its serialized value. + Use a custom material given by Terrain.materialTemplate. - + - The name of the field before the rename. + Samples the height at the given position defined in world space, relative to the terrain space. + - + - + Lets you setup the connection between neighboring Terrains. - The name of the field before renaming. + + + + - + - Force Unity to serialize a private field. + Set the additional material properties when rendering the terrain heightmap using the splat material. + - + - Shader scripts used for all rendering. + Indicate the types of changes to the terrain in OnTerrainChanged callback. - + - Shader LOD level for all shaders. + Indicates a change to the heightmap data without computing LOD. - + - Can this shader run on the end-users graphics card? (Read Only) + Indicates that a change was made to the terrain that was so significant that the internal rendering data need to be flushed and recreated. - + - Shader LOD level for this shader. + Indicates a change to the heightmap data. - + - Render queue of this shader. (Read Only) + Indicates a change to the detail data. - + - Unset a global shader keyword. + Indicates a change to the tree data. - - + - Set a global shader keyword. + Indicates that the TerrainData object is about to be destroyed. - - + - Finds a shader with the given name. + A heightmap based collider. - - + - Is global shader keyword enabled? + The terrain that stores the heightmap. - - + - Gets unique identifier for a shader property name. + The TerrainData class stores heightmaps, detail mesh positions, tree instances, and terrain texture alpha maps. - - + - Sets a global compute buffer property for all shaders. + Height of the alpha map. - - - + - Sets a global color property for all shaders. + Number of alpha map layers. - - - - + - Sets a global color property for all shaders. + Resolution of the alpha map. - - - - + - Sets a global float property for all shaders. + Alpha map textures used by the Terrain. Used by Terrain Inspector for undo. - - - - + - Sets a global float property for all shaders. + Width of the alpha map. - - - - + - Sets a global int property for all shaders. + Resolution of the base map used for rendering far patches on the terrain. - - - - + - Sets a global int property for all shaders. + The local bounding box of the TerrainData object. - - - - + - Sets a global matrix property for all shaders. + Detail height of the TerrainData. - - - - + - Sets a global matrix property for all shaders. + Contains the detail texture/meshes that the terrain has. - - - - + - Sets a global texture property for all shaders. + Detail Resolution of the TerrainData. - - - - + - Sets a global texture property for all shaders. + Detail width of the TerrainData. - - - - + - Sets a global vector property for all shaders. + Height of the terrain in samples (Read Only). - - - - + - Sets a global vector property for all shaders. + Resolution of the heightmap. - - - - + - Fully load all shaders to prevent future performance hiccups. + The size of each heightmap sample. - + - ShaderVariantCollection records which shader variants are actually used in each shader. + Width of the terrain in samples (Read Only). - + - Is this ShaderVariantCollection already warmed up? (Read Only) + The total size in world units of the terrain. - + - Number of shaders in this collection (Read Only). + Splat texture used by the terrain. - + - Number of total varians in this collection (Read Only). + The thickness of the terrain used for collision detection. - + - Adds a new shader variant to the collection. + Returns the number of tree instances. - Shader variant to add. - - False if already in the collection. - - + - Remove all shader variants from the collection. + Contains the current trees placed in the terrain. - + - Checks if a shader variant is in the collection. + The list of tree prototypes this are the ones available in the inspector. - Shader variant to check. - - True if the variant is in the collection. - - + - Create a new empty shader variant collection. + Amount of waving grass in the terrain. - + - Adds shader variant from the collection. + Speed of the waving grass. - Shader variant to add. - - False if was not in the collection. - - + - Identifies a specific variant of a shader. + Strength of the waving grass in the terrain. - + - Array of shader keywords to use in this variant. + Color of the waving grass that the terrain has. - + - Pass type to use in this variant. + 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. + - + - Shader to use in this variant. + Returns a 2D array of the detail object density in the specific location. + + + + + - + - Creates a ShaderVariant structure. + Gets the height at a certain point x,y. - - - + + - + - Fully load shaders in ShaderVariantCollection. + 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. - + - Shadow projection type for. + Gets an interpolated height at a point x,y. + + - + - Close fit shadow maps with linear fadeout. + Get an interpolated normal at a given location. + + - + - Stable shadow maps with spherical fadeout. + Gets the gradient of the terrain at point (x,y). + + - + - 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. + Returns an array of all supported detail layer indices in the area. + + + + - + - Details of the Transform name mapped to a model's skeleton bone and its default position and rotation in the T-pose. + 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. - + - The name of the Transform mapped to the bone. + Reloads all the values of the available prototypes (ie, detail mesh assets) in the TerrainData Object. - + - The T-pose position of the bone in local space. + Assign all splat values in the given map area. + + + - + - The T-pose rotation of the bone in local space. + Sets the detail layer density map. + + + + - + - The T-pose scaling of the bone in local space. + 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. - + - The Skinned Mesh filter. + 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]). - + - The bones used to skin the mesh. + 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]). - + - AABB of this Skinned Mesh in its local space. + 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. - + - The maximum number of bones affecting a single vertex. + Extension methods to the Terrain class, used only for the UpdateGIMaterials method used by the Global Illumination System. - + - The mesh used for skinning. + Schedules an update of the albedo and emissive Textures of a system that contains the Terrain. + + + + + - + - If enabled, the Skinned Mesh will be updated when offscreen. If disabled, this also disables updating animations. + Schedules an update of the albedo and emissive Textures of a system that contains the Terrain. + + + + + - + - Creates a snapshot of SkinnedMeshRenderer and stores it in mesh. + Enum provding terrain rendering options. - A static mesh that will receive the snapshot of the skinned mesh. - + - Returns weight of BlendShape on this renderer. + Render all options. - - + - Sets weight of BlendShape on this renderer. + Render terrain details. - - - + - The maximum number of bones affecting a single vertex. + Render heightmap. - + - Chooses the number of bones from the number current QualitySettings. (Default) + Render trees. - + - Use only 1 bone to deform a single vertex. (The most important bone will be used). + How multiline text should be aligned. - + - Use 2 bones to deform a single vertex. (The most important bones will be used). + Text lines are centered. - + - Use 4 bones to deform a single vertex. + Text lines are aligned on the left side. - + - A script interface for the. + Text lines are aligned on the right side. - + - The material used by the skybox. + Where the anchor of the text is placed. - + - Constants for special values of Screen.sleepTimeout. + Text is anchored in lower side, centered horizontally. - + - Prevent screen dimming. + Text is anchored in lower left corner. - + - Set the sleep timeout to whatever the user has specified in the system settings. + Text is anchored in lower right corner. - + - Joint that restricts the motion of a Rigidbody2D object to a single line. + Text is centered both horizontally and vertically. - + - The angle of the line in space (in degrees). + Text is anchored in left side, centered vertically. - + - Should the angle be calculated automatically? + Text is anchored in right side, centered vertically. - + - The current joint speed. + Text is anchored in upper side, centered horizontally. - + - The current joint translation. + Text is anchored in upper left corner. - + - Restrictions on how far the joint can slide in each direction along the line. + Text is anchored in upper right corner. - + - Gets the state of the joint limit. + Attribute to make a string be edited with a height-flexible and scrollable text area. - + - Parameters for a motor force that is applied automatically to the Rigibody2D along the line. + The maximum amount of lines the text area can show before it starts using a scrollbar. - + - The angle (in degrees) referenced between the two bodies used as the constraint for the joint. + The minimum amount of lines the text area will use. - + - Should motion limits be used? + 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. - + - Should a motor force be applied automatically to the Rigidbody2D? + 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. - + - Gets the motor force of the joint given the specified timestep. + Text file assets. - The time to calculate the motor force for. - + - Generic access to the Social API. + The raw bytes of the text asset. (Read Only) - + - The local user (potentially not logged in). + The text contents of the .txt file as a string. (Read Only) - + - This is the currently active social platform. + Different methods for how the GUI system handles text being too large to fit the rectangle allocated. - + - Create an IAchievement instance. + Text gets clipped to be inside the element. - + - Create an ILeaderboard instance. + Text flows freely outside the element. - + - Loads the achievement descriptions accociated with this application. + A struct that stores the settings for TextGeneration. - - + - Load the achievements the logged in user has already achieved or reported progress on. + Use the extents of glyph geometry to perform horizontal alignment rather than glyph metrics. - - + - Load a default set of scores from the given leaderboard. + The base color for the text generation. - - - + - Load the user profiles accociated with the given array of user IDs. + Font to use for generation. - - - + - Reports the progress of an achievement. + Font size. - - - - + - Report a score to a specific leaderboard. + Font style. - - - - + - Show a default/system view of the games achievements. + Continue to generate characters even if the text runs out of bounds. - + - Show a default/system view of the games leaderboards. + Extents that the generator will attempt to fit the text in. - + - iOS GameCenter implementation for network services. + What happens to text when it reaches the horizontal generation bounds. - + - Reset all the achievements for the local user. + The line spacing multiplier. - - + - Show the default iOS banner when achievements are completed. + Generated vertices are offset by the pivot. - - + - Show the leaderboard UI with a specific leaderboard shown initially with a specific time scope selected. + Should the text be resized to fit the configured bounds? - - - + - Information for a users achievement. + Maximum size for resized text. - + - Set to true when percentCompleted is 100.0. + Minimum size for resized text. - + - This achievement is currently hidden from the user. + Allow rich text markup in generation. - + - The unique identifier of this achievement. + A scale factor for the text. This is useful if the Text is on a Canvas and the canvas is scaled. - + - Set by server when percentCompleted is updated. + How is the generated text anchored. - + - Progress for this achievement. + Should the text generator update the bounds from the generated text. - + - Send notification about progress on this achievement. + What happens to text when it reaches the bottom generation bounds. - - + - Static data describing an achievement. + Class that can be used to generate text for rendering. - + - Description when the achivement is completed. + The number of characters that have been generated. - + - Hidden achievement are not shown in the list until the percentCompleted has been touched (even if it's 0.0). + The number of characters that have been generated and are included in the visible lines. - + - Unique identifier for this achievement description. + Array of generated characters. - + - Image representation of the achievement. + The size of the font that was found if using best fit mode. - + - Point value of this achievement. + Number of text lines generated. - + - Human readable title. + Information about each generated text line. - + - Description when the achivement has not been completed. + Extents of the generated text in rect format. - + - The leaderboard contains the scores of all players for a particular game. + Number of vertices generated. - + - Unique identifier for this leaderboard. + Array of generated vertices. - + - The leaderboad is in the process of loading scores. + Create a TextGenerator. + - + - The leaderboard score of the logged in user. + Create a TextGenerator. + - + - The total amount of scores the leaderboard contains. + Populate the given List with UICharInfo. + List to populate. - + - The rank range this leaderboard returns. + Returns the current UICharInfo. + + Character information. + - + - The leaderboard scores returned by a query. + Populate the given list with UILineInfo. + List to populate. - + - The time period/scope searched by this leaderboard. + Returns the current UILineInfo. + + Line information. + - + - The human readable title of this leaderboard. + Given a string and settings, returns the preferred height for a container that would hold this text. + Generation text. + Settings for generation. + + Preferred height. + - + - The users scope searched by this leaderboard. + Given a string and settings, returns the preferred width for a container that would hold this text. + Generation text. + Settings for generation. + + Preferred width. + - + - Load scores according to the filters set on this leaderboard. + Populate the given list with generated Vertices. - + List to populate. - + - Only search for these user IDs. + Returns the current UILineInfo. - List of user ids. + + Vertices. + - + - Represents the local or currently logged in user. + Mark the text generator as invalid. This will force a full text generation the next time Populate is called. - + - Checks if the current user has been authenticated. + Will generate the vertices and other data for the given string with the given settings. + String to generate. + Settings. - + - The users friends list. + 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. + - + - Is the user underage? + A script interface for the. - + - Authenticate the local user to the current active Social API implementation and fetch his profile data. + How lines of text are aligned (Left, Right, Center). - Callback that is called whenever authentication operation is finished. - + - 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. + Which point of the text shares the position of the Transform. - - + - A game score. + The size of each character (This scales the whole text). - + - The date the score was achieved. + The color used to render the text. - + - The correctly formatted value of the score, like X points or X kills. + The Font used. - + - The ID of the leaderboard this score belongs to. + The font size to use (for dynamic fonts). - + - The rank or position of the score in the leaderboard. + The font style to use (for dynamic fonts). - + - The user who owns this score. + How much space will be in-between lines of text. - + - The score value achieved. + How far should the text be offset from the transform.position.z when drawing. - + - Report this score instance. + Enable HTML-style tags for Text Formatting Markup. - - + - The generic Social API interface which implementations must inherit. + How much space will be inserted for a tab '\t' character. This is a multiplum of the 'spacebar' character offset. - + - See Social.localUser. + The text that is displayed. - + - See Social.CreateAchievement.. + Base class for texture handling. Contains functionality that is common to both Texture2D and RenderTexture classes. - + - See Social.CreateLeaderboard. + Anisotropic filtering level of the texture. - + - See Social.LoadAchievementDescriptions. + Dimensionality (type) of the texture (Read Only). - - + - See Social.LoadAchievements. + Filtering mode of the texture. - - + - See Social.LoadScores. + Height of the texture in pixels. (Read Only) - - - - + - See Social.LoadScores. + Mip map bias of the texture. - - - - + - See Social.LoadUsers. + Width of the texture in pixels. (Read Only) - - - + - See Social.ReportProgress. + Wrap mode (Repeat or Clamp) of the texture. - - - - + - See Social.ReportScore. + Retrieve a native (underlying graphics API) pointer to the texture resource. - - - + + Pointer to an underlying graphics API texture resource. + - + - See Social.ShowAchievementsUI. + Sets Anisotropic limits. + + - + - See Social.ShowLeaderboardUI. + Class for texture handling. - + - Represents generic user instances, like friends of the local user. + Get a small texture with all black pixels. - + - This users unique identifier. + The format of the pixel data in the texture (Read Only). - + - Avatar image of the user. + How many mipmap levels are in this texture (Read Only). - + - Is this user a friend of the current logged in user? + Get a small texture with all white pixels. - + - Presence state of the user. + 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. - + - This user's username or alias. + Compress texture into DXT format. + - + - The score range a leaderboard query should include. + 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? - + - The total amount of scores retreived. + Create a new empty texture. + + - + - The rank of the first score which is returned. + Create a new empty texture. + + + + - + - Constructor for a score range, the range starts from a specific value and contains a maxium score count. + See Also: SetPixel, SetPixels, Apply functions. - The minimum allowed value. - The number of possible values. + + + + + - + - The scope of time searched through when querying the leaderboard. + Encodes this texture into the EXR format. + Flags used to control compression and the output format. - + - The scope of the users searched through when querying the leaderboard. + Encodes this texture into JPG format. + JPG quality to encode with, 1..100 (default 75). - + - User presence state. + Encodes this texture into JPG format. + JPG quality to encode with, 1..100 (default 75). - + - The user is offline. + Encodes this texture into PNG format. - + - The user is online. + Flags used to control the encoding to an EXR file. - + - The user is online but away from his computer. + This texture will use Wavelet compression. This is best used for grainy images. - + - The user is only but set his status to busy. + The texture will use RLE (Run Length Encoding) EXR compression format (similar to Targa RLE compression). - + - The user is playing a game. + The texture will use the EXR ZIP compression format. - + - The limits defined by the CharacterJoint. + No flag. This will result in an uncompressed 16-bit float EXR file. - + - When the joint hits the limit, it can be made to bounce off it. + The texture will be exported as a 32-bit float EXR file (default is 16-bit). - + - Determines how far ahead in space the solver can "see" the joint limit. + 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. + - + - If spring is greater than zero, the limit is soft. + Returns pixel color at coordinates (x, y). + + - + - The limit position/angle of the joint (in degrees). + Returns filtered pixel color at normalized coordinates (u, v). + + - + - If greater than zero, the limit is soft. The spring will pull the joint back. + 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. + - + - The configuration of the spring attached to the joint's limits: linear and angular. Used by CharacterJoint and ConfigurableJoint. + 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. + - + - The damping of the spring limit. In effect when the stiffness of the sprint limit is not zero. + Get a block of pixel colors in Color32 format. + - + - The stiffness of the spring limit. When stiffness is zero the limit is hard, otherwise soft. + Get raw data from a texture. + + Raw texture data as a byte array. + - + - 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. + 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. + + Returns true if the data can be loaded, false otherwise. + - + - 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. + Fills texture pixels with raw preformatted data. + Byte array to initialize texture pixels with. + Size of data in bytes. - + - Returns all the layers defined in this project. + Fills texture pixels with raw preformatted data. + Byte array to initialize texture pixels with. + Size of data in bytes. - + - Returns the name of the layer as defined in the TagManager. + 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. + - + - This is the relative value that indicates the sort order of this layer relative to the other layers. + 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? - + - 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. + Resizes the texture. - 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. + Resizes the texture. - 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. + Sets pixel color at coordinates (x,y). - 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. + Set a block of pixel colors. - The unique id of a layer. - - True if the id provided is valid and assigned to a layer. - + The array of pixel colours to assign (a 2D image flattened to a 1D array). + The mip level of the texture to write to. - + - Returns the id given the name. Will return 0 if an invalid name was given. + Set a block of pixel colors. - The name of the layer. - - The unique id of the layer with name. - + + + + + + - + - The coordinate space in which to operate. + Set a block of pixel colors. + + - + - Applies transformation relative to the local coordinate system. + Set a block of pixel colors. + + + + + + - + - Applies transformation relative to the world coordinate system. + Updates Unity texture to use different native texture object. + Native 2D texture object. - + - Use this PropertyAttribute to add some spacing in the Inspector. + Class for handling 2D texture arrays. - + - The spacing in pixels. + Number of elements in a texture array (Read Only). - + - Use this DecoratorDrawer to add some spacing in the Inspector. + Texture format (Read Only). - The spacing in pixels. - + - Class for handling Sparse Textures. + 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. - + - Is the sparse texture actually created? (Read Only) + 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. - + - Get sparse texture tile height (Read Only). + 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. - + - Get sparse texture tile width (Read Only). + Returns pixel colors of a single array slice. + Array slice to read pixels from. + Mipmap level to read pixels from. + + Array of pixel colors. + - + - Create a sparse texture. + Returns pixel colors of a single array slice. - 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). + Array slice to read pixels from. + Mipmap level to read pixels from. + + Array of pixel colors in low precision (8 bits/channel) format. + - + - Create a sparse texture. + Set pixel colors for the whole mip level. - 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). + An array of pixel colors. + The texture array element index. + The mip level. - + - Unload sparse texture tile. + Set pixel colors for the whole mip level. - Tile X coordinate. - Tile Y coordinate. - Mipmap level of the texture. + An array of pixel colors. + The texture array element index. + The mip level. - + - Update sparse texture tile with color values. + Class for handling 3D Textures, Use this to create. - Tile X coordinate. - Tile Y coordinate. - Mipmap level of the texture. - Tile color data. - + - Update sparse texture tile with raw pixel values. + The depth of the texture (Read Only). - Tile X coordinate. - Tile Y coordinate. - Mipmap level of the texture. - Tile raw pixel data. - + - A sphere-shaped primitive collider. + The format of the pixel data in the texture (Read Only). - + - The center of the sphere in the object's local space. + 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. - + - The radius of the sphere measured in the object's local space. + 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? - + - A Splat prototype is just a texture that is used by the TerrainData. + Returns an array of pixel colors representing one mip level of the 3D texture. + - + - The metallic value of the splat layer. + Returns an array of pixel colors representing one mip level of the 3D texture. + - + - Normal map of the splat applied to the Terrain. + Sets pixel colors of a 3D texture. + The colors to set the pixels to. + The mipmap level to be affected by the new colors. - + - The smoothness value of the splat layer when the main texture has no alpha channel. + Sets pixel colors of a 3D texture. + The colors to set the pixels to. + The mipmap level to be affected by the new colors. - + - Texture of the splat applied to the Terrain. + Compression Quality. - + - Offset of the tile texture of the SplatPrototype. + Best compression. - + - Size of the tile used in the texture of the SplatPrototype. + Fast compression. - + - The spring joint ties together 2 rigid bodies, spring forces will be automatically applied to keep the object at the given distance. + Normal compression (default). - + - The damper force used to dampen the spring force. + Format used when creating textures from scripts. - + - The maximum distance between the bodies relative to their initial distance. + Alpha-only texture format. - + - The minimum distance between the bodies relative to their initial distance. + Color with alpha texture format, 8-bits per channel. - + - The spring force used to keep the two objects together. + A 16 bits/pixel texture format. Texture stores color with an alpha channel. - + - The maximum allowed error between the current spring length and the length defined by minDistance and maxDistance. + ASTC (10x10 pixel block in 128 bits) compressed RGB texture format. - + - Joint that attempts to keep two Rigidbody2D objects a set distance apart by applying a force between them. + ASTC (12x12 pixel block in 128 bits) compressed RGB texture format. - + - Should the distance be calculated automatically? + ASTC (4x4 pixel block in 128 bits) compressed RGB texture format. - + - The amount by which the spring force is reduced in proportion to the movement speed. + ASTC (5x5 pixel block in 128 bits) compressed RGB texture format. - + - The distance the spring will try to keep between the two objects. + ASTC (6x6 pixel block in 128 bits) compressed RGB texture format. - + - The frequency at which the spring oscillates around the distance distance between the objects. + ASTC (8x8 pixel block in 128 bits) compressed RGB texture format. - + - Represents a Sprite object for use in 2D gameplay. + ASTC (10x10 pixel block in 128 bits) compressed RGBA texture format. - + - 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. + ASTC (12x12 pixel block in 128 bits) compressed RGBA texture format. - + - Returns the border sizes of the sprite. + ASTC (4x4 pixel block in 128 bits) compressed RGBA texture format. - + - Bounds of the Sprite, specified by its center and extents in world space units. + ASTC (5x5 pixel block in 128 bits) compressed RGBA texture format. - + - Returns true if this Sprite is packed in an atlas. + ASTC (6x6 pixel block in 128 bits) compressed RGBA texture format. - + - If Sprite is packed (see Sprite.packed), returns its SpritePackingMode. + ASTC (8x8 pixel block in 128 bits) compressed RGBA texture format. - + - If Sprite is packed (see Sprite.packed), returns its SpritePackingRotation. + ATC (ATITC) 4 bits/pixel compressed RGB texture format. - + - Location of the Sprite's center point in the Rect on the original Texture, specified in pixels. + ATC (ATITC) 8 bits/pixel compressed RGB texture format. - + - The number of pixels in the sprite that correspond to one unit in world space. (Read Only) + Compressed one channel (R) texture format. - + - Location of the Sprite on the original Texture, specified in pixels. + Compressed two-channel (RG) texture format. - + - Get the reference to the used texture. If packed this will point to the atlas, if not packed will point to the source sprite. + HDR compressed color texture format. - + - Get the rectangle this sprite uses on its texture. Raises an exception if this sprite is tightly packed in an atlas. + High quality compressed color texture format. - + - 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. + Color with alpha texture format, 8-bits per channel. - + - Returns a copy of the array containing sprite mesh triangles. + Compressed color texture format. - + - The base texture coordinates of the sprite mesh. + Compressed color texture format with Crunch compression for small storage sizes. - + - Returns a copy of the array containing sprite mesh vertex positions. + Compressed color with alpha channel texture format. - + - Create a new Sprite object. + Compressed color with alpha channel texture format with Crunch compression for small storage sizes. - 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. - Scaling to map pixels in the image to world space units. - - - - - + - Sets up new Sprite geometry. + ETC2 EAC (GL ES 3.0) 4 bitspixel compressed unsigned single-channel texture format. - Array of vertex positions in Sprite Rect space. - Array of sprite mesh triangle indices. - + - How a Sprite's graphic rectangle is aligned with its pivot point. + ETC2 EAC (GL ES 3.0) 4 bitspixel compressed signed single-channel texture format. - + - Pivot is at the center of the bottom edge of the graphic rectangle. + ETC2 EAC (GL ES 3.0) 8 bitspixel compressed unsigned dual-channel (RG) texture format. - + - Pivot is at the bottom left corner of the graphic rectangle. + ETC2 EAC (GL ES 3.0) 8 bitspixel compressed signed dual-channel (RG) texture format. - + - Pivot is at the bottom right corner of the graphic rectangle. + ETC (GLES2.0) 4 bits/pixel compressed RGB texture format. - + - Pivot is at the center of the graphic rectangle. + ETC 4 bits/pixel compressed RGB texture format. - + - Pivot is at a custom position within the graphic rectangle. + ETC 4 bitspixel RGB + 4 bitspixel Alpha compressed texture format. - + - Pivot is at the center of the left edge of the graphic rectangle. + ETC2 (GL ES 3.0) 4 bits/pixel compressed RGB texture format. - + - Pivot is at the center of the right edge of the graphic rectangle. + ETC2 (GL ES 3.0) 4 bits/pixel RGB+1-bit alpha texture format. - + - Pivot is at the center of the top edge of the graphic rectangle. + ETC2 (GL ES 3.0) 8 bits/pixel compressed RGBA texture format. - + - Pivot is at the top left corner of the graphic rectangle. + PowerVR (iOS) 2 bits/pixel compressed color texture format. - + - Pivot is at the top right corner of the graphic rectangle. + PowerVR (iOS) 4 bits/pixel compressed color texture format. - + - Defines the type of mesh generated for a sprite. + PowerVR (iOS) 2 bits/pixel compressed with alpha channel texture format. - + - Rectangle mesh equal to the user specified sprite size. + PowerVR (iOS) 4 bits/pixel compressed with alpha channel texture format. - + - Tight mesh based on pixel alpha values. As many excess pixels are cropped as possible. + A 16 bit color texture format that only has a red channel. - + - Sprite packing modes for the Sprite Packer. + Scalar (R) texture format, 32 bit floating point. - + - Alpha-cropped ractangle packing. + Color texture format, 8-bits per channel. - + - Tight mesh based packing. + A 16 bit color texture format. - + - Sprite rotation modes for the Sprite Packer. + RGB HDR format, with 9 bit mantissa per channel and a 5 bit shared exponent. - + - Any rotation. + Color with alpha texture format, 8-bits per channel. - + - No rotation. + Color and alpha texture format, 4 bit per channel. - + - Renders a Sprite for 2D graphics. + RGB color and alpha texture format, 32-bit floats per channel. - + - Rendering color for the Sprite graphic. + RGB color and alpha texture format, 16 bit floating point per channel. - + - Flips the sprite on the X axis. + Two color (RG) texture format, 32 bit floating point per channel. - + - Flips the sprite on the Y axis. + Two color (RG) texture format, 16 bit floating point per channel. - + - The Sprite to render. + Scalar (R) texture format, 16 bit floating point. - + - Helper utilities for accessing Sprite data. + A format that uses the YUV color space and is often used for video encoding or playback. - + - Inner UV's of the Sprite. + Wrap mode for textures. - - + - Minimum width and height of the Sprite. + Clamps the texture to the last pixel at the border. - - + - Outer UV's of the Sprite. + Tiles the texture, creating a repeating pattern. - - + - Return the padding on the sprite. + Priority of a thread. - - + - Stack trace logging options. + Below normal thread priority. - + - Native and managed stack trace will be logged. + Highest thread priority. - + - No stack trace will be outputed to log. + Lowest thread priority. - + - Only managed stack trace will be outputed. + Normal thread priority. - + - 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. + The interface to get time information from Unity. - + - Called on the first Update frame when a statemachine evaluate this state. + Slows game playback time to allow screenshots to be saved between frames. - + - Called on the last update frame when a statemachine evaluate this state. + The time in seconds it took to complete the last frame (Read Only). - + - Called right after MonoBehaviour.OnAnimatorIK. + The interval in seconds at which physics and other fixed frame rate updates (like MonoBehaviour's MonoBehaviour.FixedUpdate) are performed. - + - Called on the first Update frame when making a transition to a StateMachine. This is not called when making a transition into a StateMachine sub-state. + The time the latest MonoBehaviour.FixedUpdate has started (Read Only). This is the time in seconds since the start of the game. - 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 timeScale-independent interval in seconds from the last fixed frame to the current one (Read Only). - The Animator playing this state machine. - The full path hash for this state machine. - + - Called right after MonoBehaviour.OnAnimatorMove. + The timeScale-independent time the latest MonoBehaviour.FixedUpdate has started (Read Only). This is the time in seconds since the start of the game. - + - Called at each Update frame except for the first and last frame. + The total number of frames that have passed (Read Only). - + - StaticBatchingUtility can prepare your objects to take advantage of Unity's static batching. + Returns true if called inside a fixed time step callback (like MonoBehaviour's MonoBehaviour.FixedUpdate), otherwise returns false. - + - Combine will prepare all children of the staticBatchRoot for static batching. + The maximum time a frame can take. Physics and other fixed frame rate updates (like MonoBehaviour's MonoBehaviour.FixedUpdate). - - + - Combine will prepare all gos for the static batching. staticBatchRoot will be treated as their parent. + 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. - - - + - Applies tangent forces along the surfaces of colliders. + The real time in seconds since the game started (Read Only). - + - The scale of the impulse force applied while attempting to reach the surface speed. + A smoothed out Time.deltaTime (Read Only). - + - The speed to be maintained along the surface. + The time at the beginning of this frame (Read Only). This is the time in seconds since the start of the game. - + - The speed variation (from zero to the variation) added to base speed to be applied. + The scale at which the time is passing. This can be used for slow motion effects. - + - Should bounce be used for any contact with the surface? + The time this frame has started (Read Only). This is the time in seconds since the last level has been loaded. - + - Should the impulse force but applied to the contact point? + The timeScale-independent interval in seconds from the last frame to the current one (Read Only). - + - Should friction be used for any contact with the surface? + The timeScale-independent time for this frame (Read Only). This is the time in seconds since the start of the game. - + - Access system and hardware information. + Interface into Tizen specific functionality. - + - The model of the device (Read Only). + Get pointer to the Tizen EvasGL object.. - + - The user defined name of the device (Read Only). + Get pointer to the native window handle. - + - Returns the kind of device the application is running on (Read Only). + Enumerator list of different activity indicators your game can show when loading. - + - A unique device identifier. It is guaranteed to be unique for every device (Read Only). + Sets your game not to show any indicator while loading. - + - The identifier code of the graphics device (Read Only). + The loading indicator size is large and rotates counterclockwise (progress_large and inverted). - + - The name of the graphics device (Read Only). + The loading indicator size is small and rotates counterclockwise (process_small and inverted). - + - The graphics API type used by the graphics device (Read Only). + The loading indicator size is large and rotates clockwise (progress_large). - + - The vendor of the graphics device (Read Only). + The loading indicator size is small and rotates clockwise (process_small). - + - The identifier code of the graphics device vendor (Read Only). + Specify a tooltip for a field in the Inspector window. - + - The graphics API type and driver version used by the graphics device (Read Only). + The tooltip text. - + - Amount of video memory present (Read Only). + Specify a tooltip for a field. + The tooltip text. - + - Is graphics device using multi-threaded rendering (Read Only)? + Structure describing the status of a finger touching the screen. - + - Graphics device shader capability level (Read Only). + Value of 0 radians indicates that the stylus is parallel to the surface, pi/2 indicates that it is perpendicular. - + - Maximum texture size (Read Only). + Value of 0 radians indicates that the stylus is pointed along the x-axis of the device. - + - What NPOT (non-power of two size) texture support does the GPU provide? (Read Only) + The position delta since last change. - + - Operating system name with version (Read Only). + Amount of time that has passed since the last recorded change in Touch values. - + - Number of processors present (Read Only). + The unique index for the touch. - + - Processor frequency in MHz (Read Only). + The maximum possible pressure value for a platform. If Input.touchPressureSupported returns false, the value of this property will always be 1.0f. - + - Processor name (Read Only). + Describes the phase of the touch. - + - How many simultaneous render targets (MRTs) are supported? (Read Only) + The position of the touch in pixel coordinates. - + - Are 3D (volume) textures supported? (Read Only) + 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. - + - Is an accelerometer available on the device? + 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. - + - Are compute shaders supported? (Read Only) + The amount that the radius varies by for a touch. - + - Is a gyroscope available on the device? + The raw position used for the touch. - + - Are image effects supported? (Read Only) + Number of taps. - + - Is GPU draw call instancing supported? (Read Only) + A value that indicates whether a touch was of Direct, Indirect (or remote), or Stylus type. - + - Is the device capable of reporting its location? + Describes phase of a finger touch. - + - Is sampling raw depth from shadowmaps supported? (Read Only) + A finger touched the screen. - + - Are render textures supported? (Read Only) + The system cancelled tracking for the touch. - + - Are cubemap render textures supported? (Read Only) + A finger was lifted from the screen. This is the final phase of a touch. - + - Are built-in shadows supported? (Read Only) + A finger moved on the screen. - + - Are sparse textures supported? (Read Only) + A finger is touching the screen but hasn't moved. - + - Is the stencil buffer supported? (Read Only) + Interface into the native iPhone, Android, Windows Phone and Windows Store Apps on-screen keyboards - it is not available on other platforms. - + - Is the device capable of providing the user haptic feedback by vibration? + Is the keyboard visible or sliding into the position on the screen? - + - Amount of system memory present (Read Only). + Returns portion of the screen which is covered by the keyboard. - + - Is render texture format supported? + Specifies whether the TouchScreenKeyboard supports the selection property. (Read Only) - The format to look up. - - True if the format is supported. - - + - Is texture format supported on this device? + Specifies if input process was finished. (Read Only) - 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. + Will text input field above the keyboard be hidden when the keyboard is on screen? - + - Afrikaans. + Is touch screen keyboard supported. - + - Arabic. + Returns the character range of the selected text within the string currently being edited. (Read Only) - + - Basque. + Specified on which display the software keyboard will appear. - + - Belarusian. + Returns the text displayed by the input field of the keyboard. - + - Bulgarian. + Returns true whenever any keyboard is completely visible on the screen. - + - Catalan. + Specifies if input process was canceled. (Read Only) - + - Chinese. + 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. - + - ChineseSimplified. + 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. - + - ChineseTraditional. + 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. - + - Czech. + 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. - + - Danish. + 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. - + - Dutch. + 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. - + - English. + 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. - + - Estonian. + Describes the type of keyboard. - + - Faroese. + Keyboard displays standard ASCII characters. - + - Finnish. + Default keyboard for the current input method. - + - French. + Keyboard optimized for specifying email addresses. - + - German. + Keypad designed for entering a person's name or phone number. - + - Greek. + Keyboard designed for Nintendo Network Accounts (available on Wii U only). - + - Hebrew. + Numeric keypad designed for PIN entry. - + - Hungarian. + Keyboard with numbers and punctuation. - + - Icelandic. + Keypad designed for entering telephone numbers. - + - Indonesian. + Keyboard optimized for URL entry. - + - Italian. + Describes whether a touch is direct, indirect (or remote), or from a stylus. - + - Japanese. + A direct touch on a device. - + - Korean. + An Indirect, or remote, touch on a device. - + - Latvian. + A touch from a stylus on a device. - + - Lithuanian. + The trail renderer is used to make trails behind objects in the scene as they move about. - + - Norwegian. + Select whether the trail will face the camera, or the orientation of the Transform Component. - + - Polish. + Does the GameObject of this trail renderer auto destructs? - + - Portuguese. + Set the color gradient describing the color of the trail at various points along its length. - + - Romanian. + Set the color at the end of the trail. - + - Russian. + The width of the trail at the end of the trail. - + - Serbo-Croatian. + Set the minimum distance the trail can travel before a new vertex is added to it. - + - Slovak. + Set this to a value greater than 0, to get rounded corners on each end of the trail. - + - Slovenian. + Set this to a value greater than 0, to get rounded corners between each segment of the trail. - + - Spanish. + Get the number of line segments in the trail. - + - Swedish. + Get the number of line segments in the trail. - + - Thai. + Set the color at the start of the trail. - + - Turkish. + The width of the trail at the spawning point. - + - Ukrainian. + Choose whether the U coordinate of the trail texture is tiled or stretched. - + - Unknown. + How long does the trail take to fade out. - + - Vietnamese. + Set the curve describing the width of the trail at various points along its length. - + - The joint attempts to move a Rigidbody2D to a specific target position. + Set an overall multiplier that is applied to the TrailRenderer.widthCurve to get the final width of the trail. - + - The local-space anchor on the rigid-body the joint is attached to. + Removes all points from the TrailRenderer. +Useful for restarting a trail from a new position. - + - Should the target be calculated automatically? + 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. + - + - The amount by which the target spring force is reduced in proportion to the movement speed. + 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. + - + - The frequency at which the target spring oscillates around the target position. + Position, rotation and scale of an object. - + - The maximum force that can be generated when trying to maintain the target joint constraint. + The number of children the Transform has. - + - The world-space position that the joint will attempt to move the body to. + The rotation as Euler angles in degrees. - + - The Terrain component renders the terrain. + The blue axis of the transform in world space. - + - The active terrain. This is a convenience function to get to the main terrain in the scene. + Has the transform changed since the last time the flag was set to 'false'? - + - The active terrains in the scene. + The transform capacity of the transform's hierarchy data structure. - + - Specifies if an array of internal light probes should be baked for terrain trees. Available only in editor. + The number of transforms in the transform's hierarchy data structure. - + - Heightmap patches beyond basemap distance will use a precomputed low res basemap. + The rotation as Euler angles in degrees relative to the parent transform's rotation. - + - Should terrain cast shadows?. + Position of the transform relative to the parent transform. - + - Collect Detail patches from memory. + The rotation of the transform relative to the parent transform's rotation. - + - Density of detail objects. + The scale of the transform relative to the parent. - + - Detail objects will be displayed up to this distance. + Matrix that transforms a point from local space into world space (Read Only). - + - Specify if terrain heightmap should be drawn. + The global scale of the object (Read Only). - + - Specify if terrain trees and details should be drawn. + The parent of the transform. - + - Lets you essentially lower the heightmap resolution used for rendering. + The position of the transform in world space. - + - An approximation of how many pixels the terrain will pop in the worst case when switching lod. + The red axis of the transform in world space. - + - The shininess value of the terrain. + Returns the topmost transform in the hierarchy. - + - The specular color of the terrain. + The rotation of the transform in world space stored as a Quaternion. - + - The index of the baked lightmap applied to this terrain. + The green axis of the transform in world space. - + - The UV scale & offset used for a baked lightmap. + Matrix that transforms a point from world space into local space (Read Only). - + - The custom material used to render the terrain. + Unparents all children. - + - The type of the material used to render the terrain. Could be one of the built-in types or custom. See Terrain.MaterialType. + Finds a child by name and returns it. + Name of child to be found. - + - The index of the realtime lightmap applied to this terrain. + Returns a transform child by index. + Index of the child transform to return. Must be smaller than Transform.childCount. + + Transform child by index. + - + - The UV scale & offset used for a realtime lightmap. + Gets the sibling index. - + - How reflection probes are used for terrain. See Rendering.ReflectionProbeUsage. + Transforms a direction from world space to local space. The opposite of Transform.TransformDirection. + - + - The Terrain Data that stores heightmaps, terrain textures, detail meshes and trees. + Transforms the direction x, y, z from world space to local space. The opposite of Transform.TransformDirection. + + + - + - Distance from the camera where trees will be rendered as billboards only. + Transforms position from world space to local space. + - + - Total distance delta that trees will use to transition from billboard orientation to mesh orientation. + Transforms the position x, y, z from world space to local space. The opposite of Transform.TransformPoint. + + + - + - The maximum distance at which trees are rendered. + Transforms a vector from world space to local space. The opposite of Transform.TransformVector. + - + - Maximum number of trees rendered at full LOD. + Transforms the vector x, y, z from world space to local space. The opposite of Transform.TransformVector. + + + - + - Adds a tree instance to the terrain. + Is this transform a child of parent? - + - + - Update the terrain's LOD and vegetation information after making changes with TerrainData.SetHeightsDelayLOD. + Rotates the transform so the forward vector points at target's current position. + Object to point towards. + Vector specifying the upward direction. - + - Creates a Terrain including collider from TerrainData. + Rotates the transform so the forward vector points at target's current position. - + Object to point towards. + Vector specifying the upward direction. - + - Flushes any change done in the terrain so it takes effect. + Rotates the transform so the forward vector points at worldPosition. + Point to look at. + Vector specifying the upward direction. - + - 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. + Rotates the transform so the forward vector points at worldPosition. - [in / out] A list to hold the returned reflection probes and their weights. See ReflectionProbeBlendInfo. + Point to look at. + Vector specifying the upward direction. - + - Get the position of the terrain. + 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 to apply. + Rotation is local to object or World. - + - The type of the material used to render a terrain object. Could be one of the built-in types or custom. + 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. - + - A built-in material that uses the legacy Lambert (diffuse) lighting model and has optional normal map support. + 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. - + - A built-in material that uses the legacy BlinnPhong (specular) lighting model and has optional normal map support. + Rotates the transform about axis passing through point in world coordinates by angle degrees. + + + - + - 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. + Move the transform to the start of the local transform list. - + - Samples the height at the given position defined in world space, relative to the terrain space. + Move the transform to the end of the local transform list. - - + - Lets you setup the connection between neighboring Terrains. + 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. - + - A heightmap based collider. + 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. - + - The terrain that stores the heightmap. + Sets the world space position and rotation of the Transform component. + + - + - The TerrainData class stores heightmaps, detail mesh positions, tree instances, and terrain texture alpha maps. + Sets the sibling index. + Index to set. - + - Height of the alpha map. + Transforms direction from local space to world space. + - + - Number of alpha map layers. + Transforms direction x, y, z from local space to world space. + + + - + - Resolution of the alpha map. + Transforms position from local space to world space. + - + - Alpha map textures used by the Terrain. Used by Terrain Inspector for undo. + Transforms the position x, y, z from local space to world space. + + + - + - Width of the alpha map. + Transforms vector from local space to world space. + - + - Resolution of the base map used for rendering far patches on the terrain. + Transforms vector x, y, z from local space to world space. + + + - + - Detail height of the TerrainData. + Moves the transform in the direction and distance of translation. + + - + - Contains the detail texture/meshes that the terrain has. + Moves the transform in the direction and distance of translation. + + - + - Detail Resolution of the TerrainData. + Moves the transform by x along the x axis, y along the y axis, and z along the z axis. + + + + - + - Detail width of the TerrainData. + Moves the transform by x along the x axis, y along the y axis, and z along the z axis. + + + + - + - Height of the terrain in samples (Read Only). + Moves the transform in the direction and distance of translation. + + - + - Resolution of the heightmap. + Moves the transform by x along the x axis, y along the y axis, and z along the z axis. + + + + - + - The size of each heightmap sample. + Transparent object sorting mode of a Camera. - + - Width of the terrain in samples (Read Only). + Sort objects based on distance along a custom axis. - + - The total size in world units of the terrain. + Default transparency sorting mode. - + - Splat texture used by the terrain. + Orthographic transparency sorting mode. - + - The thickness of the terrain used for collision detection. + Perspective transparency sorting mode. - + - Returns the number of tree instances. + Tree Component for the tree creator. - + - Contains the current trees placed in the terrain. + Data asociated to the Tree. - + - The list of tree prototypes this are the ones available in the inspector. + Tells if there is wind data exported from SpeedTree are saved on this component. - + - Amount of waving grass in the terrain. + Contains information about a tree placed in the Terrain game object. - + - Speed of the waving grass. + Color of this instance. - + - Strength of the waving grass in the terrain. + Height scale of this instance (compared to the prototype's size). - + - Color of the waving grass that the terrain has. + Lightmap color calculated for this instance. - + - Returns the alpha map at a position x, y given a width and height. + Position of the tree. - - - - - + - Returns a 2D array of the detail object density in the specific location. + Index of this instance in the TerrainData.treePrototypes array. - - - - - - + - Gets the height at a certain point x,y. + Read-only. + +Rotation of the tree on X-Z plane (in radians). - - - + - Get an array of heightmap samples. + Width scale of this instance (compared to the prototype's size). - 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. + Simple class that contains a pointer to a tree prototype. - - - + - Get an interpolated normal at a given location. + Bend factor of the tree prototype. - - - + - Gets the gradient of the terrain at point &amp;amp;amp;lt;x,y&amp;amp;amp;gt;. + Retrieves the actual GameObect used by the tree. - - - + - Returns an array of all supported detail layer indices in the area. + Class that specifies some information about a renderable character. - - - - - + - 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. + Character width. - The index of the tree instance. - + - Reloads all the values of the available prototypes (ie, detail mesh assets) in the TerrainData Object. + Position of the character cursor in local (text generated) space. - + - Assign all splat values in the given map area. + Information about a generated line of text. - - - - + - Sets the detail layer density map. + Height of the line. - - - - - + - Set the resolution of the detail map. + Space in pixels between this line and the next line. - 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. + Index of the first character in the line. - 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. + 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. - 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. + Vertex class used by a Canvas for managing vertices. - The index of the tree instance. - The new TreeInstance value. - + - Enum provding terrain rendering options. + Vertex color. - + - Render all options. + Normal. - + - Render terrain details. + Vertex position. - + - Render heightmap. + Simple UIVertex with sensible settings for use in the UI system. - + - Render trees. + Tangent. - + - How multiline text should be aligned. + The first texture coordinate set of the mesh. Used by UI elements by default. - + - Text lines are centered. + The second texture coordinate set of the mesh, if present. - + - Text lines are aligned on the left side. + The Third texture coordinate set of the mesh, if present. - + - Text lines are aligned on the right side. + The forth texture coordinate set of the mesh, if present. - + - Where the anchor of the text is placed. + 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. - + - Text is anchored in lower side, centered horizontally. + Version of Unity API. - + - Text is anchored in lower left corner. + Initializes a new instance of UnityAPICompatibilityVersionAttribute. + Unity version that this assembly with compatible with. - + - Text is anchored in lower right corner. + Constants to pass to Application.RequestUserAuthorization. - + - Text is centered both horizontally and vertically. + Request permission to use any audio input sources attached to the computer. - + - Text is anchored in left side, centered vertically. + Request permission to use any video input sources attached to the computer. - + - Text is anchored in right side, centered vertically. + Representation of 2D vectors and points. - + - Text is anchored in upper side, centered horizontally. + Shorthand for writing Vector2(0, -1). - + - Text is anchored in upper left corner. + Shorthand for writing Vector2(-1, 0). - + - Text is anchored in upper right corner. + Returns the length of this vector (Read Only). - + - Attribute to make a string be edited with a height-flexible and scrollable text area. + Returns this vector with a magnitude of 1 (Read Only). - + - The maximum amount of lines the text area can show before it starts using a scrollbar. + Shorthand for writing Vector2(1, 1). - + - The minimum amount of lines the text area will use. + Shorthand for writing Vector2(1, 0). - + - Attribute to make a string be edited with a height-flexible and scrollable text area. + Returns the squared length of this vector (Read Only). - 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. + Shorthand for writing Vector2(0, 1). - 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. + X component of the vector. - + - The raw bytes of the text asset. (Read Only) + Y component of the vector. - + - The text contents of the .txt file as a string. (Read Only) + Shorthand for writing Vector2(0, 0). - + - Different methods for how the GUI system handles text being too large to fit the rectangle allocated. + Returns the angle in degrees between from and to. + + - + - Text gets clipped to be inside the element. + Returns a copy of vector with its magnitude clamped to maxLength. + + - + - Text flows freely outside the element. + Constructs a new vector with given x, y components. + + - + - A struct that stores the settings for TextGeneration. + Returns the distance between a and b. + + - + - Use the extents of glyph geometry to perform horizontal alignment rather than glyph metrics. + Dot Product of two vectors. + + - + - The base color for the text generation. + Returns true if the given vector is exactly equal to this vector. + - + - Font to use for generation. + Converts a Vector3 to a Vector2. + - + - Font size. + Converts a Vector2 to a Vector3. + - + - Font style. + Linearly interpolates between vectors a and b by t. + + + - + - Continue to generate characters even if the text runs out of bounds. + Linearly interpolates between vectors a and b by t. + + + - + - Extents that the generator will attempt to fit the text in. + Returns a vector that is made from the largest components of two vectors. + + - + - What happens to text when it reaches the horizontal generation bounds. + Returns a vector that is made from the smallest components of two vectors. + + - + - The line spacing multiplier. + Moves a point current towards target. + + + - + - Generated vertices are offset by the pivot. + Makes this vector have a magnitude of 1. - + - Should the text be resized to fit the configured bounds? + Divides a vector by a number. + + - + - Maximum size for resized text. + Returns true if two vectors are approximately equal. + + - + - Minimum size for resized text. + Subtracts one vector from another. + + - + - Allow rich text markup in generation. + Negates a vector. + - + - A scale factor for the text. This is useful if the Text is on a Canvas and the canvas is scaled. + Multiplies a vector by a number. + + - + - How is the generated text anchored. + Multiplies a vector by a number. + + - + - Should the text generator update the bounds from the generated text. + Adds two vectors. + + - + - What happens to text when it reaches the bottom generation bounds. + Reflects a vector off the vector defined by a normal. + + - + - Class that can be used to generate text for rendering. + Multiplies two vectors component-wise. + + - + - The number of characters that have been generated. + Multiplies every component of this vector by the same component of scale. + - + - The number of characters that have been generated and are included in the visible lines. + Set x and y components of an existing Vector2. + + - + - Array of generated characters. + 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. - + - The size of the font that was found if using best fit mode. + 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. - + - Number of text lines generated. + 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. - + - Information about each generated text line. + Access the x or y component using [0] or [1] respectively. - + - Extents of the generated text in rect format. + Returns a nicely formatted string for this vector. + - + - Number of vertices generated. + Returns a nicely formatted string for this vector. + - + - Array of generated vertices. + Representation of 3D vectors and points. - + - Create a TextGenerator. + Shorthand for writing Vector3(0, 0, -1). - - + - Create a TextGenerator. + Shorthand for writing Vector3(0, -1, 0). - - + - Populate the given List with UICharInfo. + Shorthand for writing Vector3(0, 0, 1). - List to populate. - + - Returns the current UICharInfo. + Shorthand for writing Vector3(-1, 0, 0). - - Character information. - - + - Populate the given list with UILineInfo. + Returns the length of this vector (Read Only). - List to populate. - + - Returns the current UILineInfo. + Returns this vector with a magnitude of 1 (Read Only). - - Line information. - - + - Given a string and settings, returns the preferred height for a container that would hold this text. + Shorthand for writing Vector3(1, 1, 1). - Generation text. - Settings for generation. - - Preferred height. - - + - Given a string and settings, returns the preferred width for a container that would hold this text. + Shorthand for writing Vector3(1, 0, 0). - Generation text. - Settings for generation. - - Preferred width. - - + - Populate the given list with generated Vertices. + Returns the squared length of this vector (Read Only). - List to populate. - + - Returns the current UILineInfo. + Shorthand for writing Vector3(0, 1, 0). - - Vertices. - - + - Mark the text generator as invalid. This will force a full text generation the next time Populate is called. + X component of the vector. - + - Will generate the vertices and other data for the given string with the given settings. + Y component of the vector. - String to generate. - Settings. - + - A script interface for the. + Z component of the vector. - + - How lines of text are aligned (Left, Right, Center). + Shorthand for writing Vector3(0, 0, 0). - + - Which point of the text shares the position of the Transform. + Returns the angle in degrees between from and to. + The angle extends round from this vector. + The angle extends round to this vector. - + - The size of each character (This scales the whole text). + Returns a copy of vector with its magnitude clamped to maxLength. + + - + - The color used to render the text. + Cross Product of two vectors. + + - + - The Font used. + Creates a new vector with given x, y, z components. + + + - + - The font size to use (for dynamic fonts). + Creates a new vector with given x, y components and sets z to zero. + + - + - The font style to use (for dynamic fonts). + Returns the distance between a and b. + + - + - How much space will be in-between lines of text. + Dot Product of two vectors. + + - + - How far should the text be offset from the transform.position.z when drawing. + Returns true if the given vector is exactly equal to this vector. + - + - Enable HTML-style tags for Text Formatting Markup. + Linearly interpolates between two vectors. + + + - + - How much space will be inserted for a tab '\t' character. This is a multiplum of the 'spacebar' character offset. + Linearly interpolates between two vectors. + + + - + - The text that is displayed. + Returns a vector that is made from the largest components of two vectors. + + - + - Base class for texture handling. Contains functionality that is common to both Texture2D and RenderTexture classes. + Returns a vector that is made from the smallest components of two vectors. + + - + - Anisotropic filtering level of the texture. + Moves a point current in a straight line towards a target point. + + + - + - Filtering mode of the texture. + + - + - Height of the texture in pixels. (Read Only) + Makes this vector have a magnitude of 1. - + - Mip map bias of the texture. + Divides a vector by a number. + + - + - Width of the texture in pixels. (Read Only) + Returns true if two vectors are approximately equal. + + - + - Wrap mode (Repeat or Clamp) of the texture. + Subtracts one vector from another. + + - + - Retrieve native ('hardware') pointer to a texture. + Negates a vector. + - + - Sets Anisotropic limits. + Multiplies a vector by a number. - - + + - + - Class for texture handling. + Multiplies a vector by a number. + + - + - Get a small texture with all black pixels. + Adds two vectors. + + - + - The format of the pixel data in the texture (Read Only). + Makes vectors normalized and orthogonal to each other. + + - + - How many mipmap levels are in this texture (Read Only). + Makes vectors normalized and orthogonal to each other. + + + - + - Get a small texture with all white pixels. + Projects a vector onto another vector. + + - + - Actually apply all previous SetPixel and SetPixels changes. + Projects a vector onto a plane defined by a normal orthogonal to the plane. - - + + - + - Compress texture into DXT format. + Reflects a vector off the plane defined by a normal. - + + - + - Creates Unity Texture out of externally created native texture object. + Rotates a vector current towards target. - 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. + Multiplies two vectors component-wise. - - + + - + - Create a new empty texture. + Multiplies every component of this vector by the same component of scale. - - - - + - + - See Also: SetPixel, SetPixels, Apply functions. + Set x, y and z components of an existing Vector3. - - - - - + + + - + - Encodes this texture into JPG format. + Spherically interpolates between two vectors. - JPG quality to encode with, 1..100 (default 75). + + + - + - Encodes this texture into JPG format. + Spherically interpolates between two vectors. - JPG quality to encode with, 1..100 (default 75). + + + - + - Encodes this texture into PNG format. + 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. - + - Returns pixel color at coordinates (x, y). + 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. - + - Returns filtered pixel color at normalized coordinates (u, v). + 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. - + - Get a block of pixel colors. + Access the x, y, z components using [0], [1], [2] respectively. - - + - Get a block of pixel colors. + Returns a nicely formatted string for this vector. - - - - - + - + - Get a block of pixel colors in Color32 format. + Returns a nicely formatted string for this vector. - + - + - Get raw data from a texture. + Representation of four-dimensional vectors. - - Raw texture data as a byte array. - - + - Loads PNG/JPG image byte array into a texture. + Returns the length of this vector (Read Only). - The byte array containing the image data to load. - Set to false by default, pass true to optionally mark the texture as non-readable. - - Returns true if the data can be loaded, false otherwise. - - + - Fills texture pixels with raw preformatted data. + Returns this vector with a magnitude of 1 (Read Only). - Byte array to initialize texture pixels with. - Size of data in bytes. - + - Fills texture pixels with raw preformatted data. + Shorthand for writing Vector4(1,1,1,1). - Byte array to initialize texture pixels with. - Size of data in bytes. - + - Packs multiple Textures into a texture atlas. + Returns the squared length of this vector (Read Only). - 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. + W component of the vector. - 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. + X component of the vector. - - - - - + - Resizes the texture. + Y component of the vector. - - - + - Sets pixel color at coordinates (x,y). + Z component of the vector. - - - - + - Set a block of pixel colors. + Shorthand for writing Vector4(0,0,0,0). - - - + - Set a block of pixel colors. + Creates a new vector with given x, y, z, w components. - - - - - - - - Set a block of pixel colors. - - - + + - + - Set a block of pixel colors. + Creates a new vector with given x, y, z components and sets w to zero. - - - - + - + - Updates Unity texture to use different native texture object. + Creates a new vector with given x, y components and sets z and w to zero. - Native 2D texture object. + + - + - Class for handling 3D Textures, Use this to create. + Returns the distance between a and b. + + - + - The depth of the texture (Read Only). + Dot Product of two vectors. + + - + - The format of the pixel data in the texture (Read Only). + Returns true if the given vector is exactly equal to this vector. + - + - Actually apply all previous SetPixels changes. + Converts a Vector4 to a Vector2. - + - + - Create a new empty 3D Texture. + Converts a Vector4 to a Vector3. - 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. + Converts a Vector2 to a Vector4. - + - + - Returns an array of pixel colors representing one mip level of the 3D texture. + Converts a Vector3 to a Vector4. - + - + - Sets pixel colors of a 3D texture. + Linearly interpolates between two vectors. - The colors to set the pixels to. - The mipmap level to be affected by the new colors. + + + - + - Sets pixel colors of a 3D texture. + Linearly interpolates between two vectors. - The colors to set the pixels to. - The mipmap level to be affected by the new colors. + + + - + - Compression Quality. + Returns a vector that is made from the largest components of two vectors. + + - + - Best compression. + Returns a vector that is made from the smallest components of two vectors. + + - + - Fast compression. + Moves a point current towards target. + + + - + - Normal compression (default). + + - + - Format used when creating textures from scripts. + Makes this vector have a magnitude of 1. - + - Alpha-only texture format. + Divides a vector by a number. + + - + - Color with an alpha channel texture format. + Returns true if two vectors are approximately equal. + + - + - A 16 bits/pixel texture format. Texture stores color with an alpha channel. + Subtracts one vector from another. + + - + - ASTC (10x10 pixel block in 128 bits) compressed RGB texture format. + Negates a vector. + - + - ASTC (12x12 pixel block in 128 bits) compressed RGB texture format. + Multiplies a vector by a number. + + - + - ASTC (4x4 pixel block in 128 bits) compressed RGB texture format. + Multiplies a vector by a number. + + - + - ASTC (5x5 pixel block in 128 bits) compressed RGB texture format. + Adds two vectors. + + - + - ASTC (6x6 pixel block in 128 bits) compressed RGB texture format. + Projects a vector onto another vector. + + - + - ASTC (8x8 pixel block in 128 bits) compressed RGB texture format. + Multiplies two vectors component-wise. + + - + - ASTC (10x10 pixel block in 128 bits) compressed RGBA texture format. + Multiplies every component of this vector by the same component of scale. + - + - ASTC (12x12 pixel block in 128 bits) compressed RGBA texture format. + Set x, y, z and w components of an existing Vector4. + + + + - + - ASTC (4x4 pixel block in 128 bits) compressed RGBA texture format. + Access the x, y, z, w components using [0], [1], [2], [3] respectively. - + - ASTC (5x5 pixel block in 128 bits) compressed RGBA texture format. + Returns a nicely formatted string for this vector. + - + - ASTC (6x6 pixel block in 128 bits) compressed RGBA texture format. + Returns a nicely formatted string for this vector. + - + - ASTC (8x8 pixel block in 128 bits) compressed RGBA texture format. + Wrapping modes for text that reaches the vertical boundary. - + - ATC (ATITC) 4 bits/pixel compressed RGB texture format. + Text well continue to generate when reaching vertical boundary. - + - ATC (ATITC) 8 bits/pixel compressed RGB texture format. + Text will be clipped when reaching the vertical boundary. - + - Format returned by iPhone camera. + Methods used to fit a video in the target area. - + - Compressed color texture format. + Resize proportionally so that width fits the target area, cropping or adding black bars above and below if needed. - + - Compressed color texture format with crunch compression for small storage sizes. + Resize proportionally so that content fits the target area, adding black bars if needed. - + - Compressed color with alpha channel texture format. + Resize proportionally so that content fits the target area, cropping if needed. - + - Compressed color with alpha channel texture format with crunch compression for small storage sizes. + Resize proportionally so that height fits the target area, cropping or adding black bars on each side if needed. - + - ETC2 EAC (GL ES 3.0) 4 bitspixel compressed unsigned single-channel texture format. + Preserve the pixel size without adjusting for target area. - + - ETC2 EAC (GL ES 3.0) 4 bitspixel compressed signed single-channel texture format. + Resize non-proportionally to fit the target area. - + - ETC2 EAC (GL ES 3.0) 8 bitspixel compressed unsigned dual-channel (RG) texture format. + Places where the audio embedded in a video can be sent. - + - ETC2 EAC (GL ES 3.0) 8 bitspixel compressed signed dual-channel (RG) texture format. + Send the embedded audio into a specified AudioSource. - + - ETC (GLES2.0) 4 bits/pixel compressed RGB texture format. + Send the embedded audio direct to the platform's audio hardware. - + - ETC (Nintendo 3DS) 4 bits/pixel compressed RGB texture format. + Disable the embedded audio. - + - ETC (Nintendo 3DS) 4 bitspixel RGB + 4 bitspixel Alpha compressed texture format. + A container for video data. - + - ETC2 (GL ES 3.0) 4 bits/pixel compressed RGB texture format. + Number of audio tracks in the clip. - + - ETC2 (GL ES 3.0) 4 bits/pixel RGB+1-bit alpha texture format. + The length of the VideoClip in frames. (Read Only). - + - ETC2 (GL ES 3.0) 8 bits/pixel compressed RGBA texture format. + The frame rate of the clip in frames/second. (Read Only). - + - PowerVR (iOS) 2 bits/pixel compressed color texture format. + The height of the images in the video clip in pixels. (Read Only). - + - PowerVR (iOS) 4 bits/pixel compressed color texture format. + The length of the video clip in seconds. (Read Only). - + - PowerVR (iOS) 2 bits/pixel compressed with alpha channel texture format. + The video clip path in the project's assets. (Read Only). - + - PowerVR (iOS) 4 bits/pixel compressed with alpha channel texture format. + The width of the images in the video clip in pixels. (Read Only). - + - A 16 bit color texture format that only has a red channel. + 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. + - + - Scalar (R) texture format, 32 bit floating point. + Get the audio track language. Can be unknown. + Index of the audio queried audio track. + + The abbreviated name of the language. + - + - A color texture format. + Get the audio track sampling rate in Hertz. + Index of the audio queried audio track. + + The sampling rate in Hertz. + - + - A 16 bit color texture format. + Plays video content onto a target. - + - Color with alpha texture format, 8-bits per channel. + Defines how the video content will be stretched to fill the target area. - + - Color and alpha texture format, 4 bit per channel. + Destination for the audio embedded in the video. - + - RGB color and alpha etxture format, 32-bit floats per channel. + Number of audio tracks found in the data source currently configured. - + - RGB color and alpha texture format, 16 bit floating point per channel. + Whether direct-output volume controls are supported for the current platform and video format. (Read Only) - + - Two color (RG) texture format, 32 bit floating point per channel. + Whether the playback speed can be changed. (Read Only) - + - Two color (RG) texture format, 16 bit floating point per channel. + Determines whether the VideoPlayer skips frames to catch up with current time. (Read Only) - + - Scalar (R) texture format, 16 bit floating point. + Whether current time can be changed using the time or timeFrames property. (Read Only) - + - A format that uses the YUV color space and is often used for video encoding. Currently, this texture format is only useful for native code plugins as there is no support for texture importing or pixel access for this format. YUY2 is implemented for Direct3D 9, Direct3D 11, and Xbox One. + Whether the time source followed by the VideoPlayer can be changed. (Read Only) - + - Wrap mode for textures. + Returns true if the VideoPlayer can step forward through the video content. (Read Only) - + - Clamps the texture to the last pixel at the border. + The clip being played by the VideoPlayer. - + - Tiles the texture, creating a repeating pattern. + Number of audio tracks that this VideoPlayer will take control of. The other ones will be silenced. A maximum of 64 tracks are allowed. +The actual number of audio tracks cannot be known in advance when playing URLs, which is why this value is independent of the Video.VideoPlayer.audioTrackCount property. - + - Priority of a thread. + Maximum number of audio tracks that can be controlled. - + - Below normal thread priority. + Errors such as HTTP connection problems are reported through this callback. + - + - Highest thread priority. + The frame index currently being displayed by the VideoPlayer. - + - Lowest thread priority. + Number of frames in the current video content. - + - Normal thread priority. + [NOT YET IMPLEMENTED] Invoked when the video decoder does not produce a frame as per the time source during playback. + - + - The interface to get time information from Unity. + The frame rate of the clip or URL in frames/second. (Read Only). - + - Slows game playback time to allow screenshots to be saved between frames. + Invoked when a new frame is ready. + - + - The time in seconds it took to complete the last frame (Read Only). + Determines whether the VideoPlayer restarts from the beginning when it reaches the end of the clip. - + - The interval in seconds at which physics and other fixed frame rate updates (like MonoBehaviour's MonoBehaviour.FixedUpdate) are performed. + Whether content is being played. (Read Only) - + - The time the latest MonoBehaviour.FixedUpdate has started (Read Only). This is the time in seconds since the start of the game. + Whether the VideoPlayer has successfully prepared the content to be played. (Read Only) - + - The total number of frames that have passed (Read Only). + Invoked when the VideoPlayer reaches the end of the content to play. + - + - The maximum time a frame can take. Physics and other fixed frame rate updates (like MonoBehaviour's MonoBehaviour.FixedUpdate). + Factor by which the basic playback rate will be multiplied. - + - The real time in seconds since the game started (Read Only). + Whether the content will start playing back as soon as the component awakes. - + - A smoothed out Time.deltaTime (Read Only). + Invoked when the VideoPlayer preparation is complete. + - + - The time at the beginning of this frame (Read Only). This is the time in seconds since the start of the game. + Where the video content will be drawn. - + - The scale at which the time is passing. This can be used for slow motion effects. + Invoke after a seek operation completes. + - + - The time this frame has started (Read Only). This is the time in seconds since the last level has been loaded. + Enables the frameReady events. - + - The timeScale-independent time in seconds it took to complete the last frame (Read Only). + Whether the VideoPlayer is allowed to skip frames to catch up with current time. - + - The timeScale-independant time at the beginning of this frame (Read Only). This is the time in seconds since the start of the game. + The source that the VideoPlayer uses for playback. - + - Interface into Tizen specific functionality. + Invoked immediately after Play is called. + - + - Get pointer to the native window handle. + Camera component to draw to when Video.VideoPlayer.renderMode is set to either Video.VideoTarget.CameraBackPlane or Video.VideoTarget.CameraFrontPlane. - + - Specify a tooltip for a field. + Overall transparency level of the target camera plane video. - + - The tooltip text. + Material texture property which is targeted when Video.VideoPlayer.renderMode is set to Video.VideoTarget.MaterialOverride. - + - Specify a tooltip for a field. + Renderer which is targeted when Video.VideoPlayer.renderMode is set to Video.VideoTarget.MaterialOverride - The tooltip text. - + - Structure describing the status of a finger touching the screen. + RenderTexture to draw to when Video.VideoPlayer.renderMode is set to Video.VideoTarget.RenderTexture. - + - Value of 0 radians indicates that the stylus is parallel to the surface, pi/2 indicates that it is perpendicular. + Internal texture in which video content is placed. - + - Value of 0 radians indicates that the stylus is pointed along the x-axis of the device. + The VideoPlayer current time in seconds. - + - The position delta since last change. + [NOT YET IMPLEMENTED] The source used used by the VideoPlayer to derive its current time. - + - Amount of time that has passed since the last recorded change in Touch values. + The file or HTTP URL that the VideoPlayer will read content from. - + - The unique index for the touch. + 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 maximum possible pressure value for a platform. If Input.touchPressureSupported returns false, the value of this property will always be 1.0f. + 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. - + - Describes the phase of the touch. + Delegate type for VideoPlayer events that contain an error message. + The VideoPlayer that is emitting the event. + Message describing the error just encountered. - + - The position of the touch in pixel coordinates. + Delegate type for all parameter-less events emitted by VideoPlayers. + The VideoPlayer that is emitting the event. - + - 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. + Delegate type for VideoPlayer events that carry a frame number. + The VideoPlayer that is emitting the event. + The frame the VideoPlayer is now at. + - + - 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. + The number of audio channels in the specified audio track. + Index for the audio track being queried. + + Number of audio channels. + - + - The amount that the radius varies by for a touch. + Returns the language code, if any, for the specified track. + Index of the audio track to query. + + Language code. + - + - Number of taps. + Get the direct-output audio mute status for the specified track. + - + - A value that indicates whether a touch was of Direct, Indirect (or remote), or Stylus type. + Return the direct-output volume for specified track. + Track index for which the volume is queried. + + Volume, between 0 and 1. + - + - Describes phase of a finger touch. + 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. + - + - A finger touched the screen. + Returns whether decoding for the specified audio track is enabled. See Video.VideoPlayer.EnableAudioTrack for distinction with mute. + Index of the audio track being queried. + + True if decoding for the specified audio track is enabled. + - + - The system cancelled tracking for the touch. + Pauses the playback and leaves the current time intact. - + - A finger was lifted from the screen. This is the final phase of a touch. + Starts playback. - + - A finger moved on the screen. + Initiates playback engine prepration. - + - A finger is touching the screen but hasn't moved. + Set the direct-output audio mute status for the specified track. + Track index for which the mute is set. + Mute on/off. - + - Interface into the native iPhone, Android, Windows Phone and Windows Store Apps on-screen keyboards - it is not available on other platforms. + Set the direct-output audio volume for the specified track. + Track index for which the volume is set. + New volume, between 0 and 1. - + - Is the keyboard visible or sliding into the position on the screen? + 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. - + - Returns portion of the screen which is covered by the keyboard. + Advances the current time by one frame immediately. - + - Specifies if input process was finished. (Read Only) + Pauses the playback and sets the current time to 0. - + - Will text input field above the keyboard be hidden when the keyboard is on screen? + Type of destination for the images read by a VideoPlayer. - + - Is touch screen keyboard supported. + Don't draw the video content anywhere, but still make it available via the VideoPlayer's texture property in the API. - + - Specified on which display the software keyboard will appear. + Draw video content behind a camera's scene. - + - Returns the text displayed by the input field of the keyboard. + Draw video content in front of a camera's scene. - + - Returns true whenever any keyboard is completely visible on the screen. + Draw the video content into a user-specified property of the current GameObject's material. - + - Specifies if input process was canceled. (Read Only) + Draw video content into a RenderTexture. - + - Opens the native keyboard provided by OS on the screen. + Source of the video content for a VideoPlayer. - 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. - + - Opens the native keyboard provided by OS on the screen. + Use the current URL as the video content source. - 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. - + - Opens the native keyboard provided by OS on the screen. + Use the current clip as the video content source. - 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. - + - Opens the native keyboard provided by OS on the screen. + Time source followed by the Video.VideoPlayer when reading content. - 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. - + - Opens the native keyboard provided by OS on the screen. + The audio hardware clock. - 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. - + - Opens the native keyboard provided by OS on the screen. + The unscaled game time as defined by Time.realtimeSinceStartup. - 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. - + - Opens the native keyboard provided by OS on the screen. + A collection of methods and properties for interacting with the VR tracking system. - 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. - + - Describes the type of keyboard. + Disables positional tracking in VR. If set to true the camera only tracks headset rotation state. - + - Keyboard displays standard ASCII characters. + 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. + - + - Default keyboard for the current input method. + 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. + - + - Keyboard optimized for specifying email addresses. + Center tracking to the current position and orientation of the HMD. - + - Keypad designed for entering a person's name or phone number. + Represents the size of physical space available for VR. - + - Keyboard designed for Nintendo Network Accounts (available on Wii U only). + Represents a space large enough for free movement. - + - Numeric keypad designed for PIN entry. + Represents a small space where movement may be constrained or positional tracking is unavailable. - + - Keyboard with numbers and punctuation. + Contains all functionality related to a VR device. - + - Keypad designed for entering telephone numbers. + The name of the family of the loaded VR device. - + - Keyboard optimized for URL entry. + Successfully detected a VR device in working order. - + - Describes whether a touch is direct, indirect (or remote), or from a stylus. + Specific model of loaded VR device. - + - A direct touch on a device. + Refresh rate of the display in Hertz. - + - An Indirect, or remote, touch on a device. + This method returns an IntPtr representing the native pointer to the VR device if one is available, otherwise the value will be IntPtr.Zero. + + The native pointer to the VR device. + - + - A touch from a stylus on a 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. + - + - The trail renderer is used to make trails behind objects in the scene as they move about. + 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. + - + - Does the GameObject of this trail renderer auto destructs? + Supported VR devices. - + - The width of the trail at the end of the trail. + Sony's Project Morpheus VR device for Playstation 4. (Obsolete please use VRDeviceType.PlayStationVR instead). - + - The width of the trail at the spawning point. + No VR Device. - + - How long does the trail take to fade out. + Oculus family of VR devices. - + - Removes all points from the TrailRenderer. -Useful for restarting a trail from a new position. + Sony's PlayStation VR device for Playstation 4 (formerly called Project Morpheus VR).Sony's PlayStation VR device for Playstation 4 (formerly called Project Morpheus VR). - + - Position, rotation and scale of an object. + Split screen stereo 3D (the left and right cameras are rendered side by side). - + - The number of children the Transform has. + Stereo 3D via D3D11 or OpenGL. - + - The rotation as Euler angles in degrees. + This value is returned when running on a device that does not have its own value in this VRDeviceType enum. To find out the device name, you can use VRSettings.loadedDeviceName. - + - The blue axis of the transform in world space. + Enumeration of nodes which can be updated by VR input. - + - Has the transform changed since the last time the flag was set to 'false'? + Node representing a point between the left and right eyes. - + - The rotation as Euler angles in degrees relative to the parent transform's rotation. + Node representing the user's head. - + - Position of the transform relative to the parent transform. + Node representing the left eye. - + - The rotation of the transform relative to the parent transform's rotation. + Node representing the left hand. - + - The scale of the transform relative to the parent. + Node representing the right eye. - + - Matrix that transforms a point from local space into world space (Read Only). + Node representing the right hand. - + - The global scale of the object (Read Only). + Global VR related settings. - + - The parent of the transform. + Globally enables or disables VR for the application. - + - The position of the transform in world space. + The current height of an eye texture for the loaded device. - + - The red axis of the transform in world space. + The current width of an eye texture for the loaded device. - + - Returns the topmost transform in the hierarchy. + Read-only value that can be used to determine if the VR device is active. - + - The rotation of the transform in world space stored as a Quaternion. + Type of VR device that is currently in use. - + - The green axis of the transform in world space. + Type of VR device that is currently loaded. - + - Matrix that transforms a point from world space into local space (Read Only). + Controls the texel:pixel ratio before lens correction, trading performance for sharpness. - + - Unparents all children. + Controls the texel:pixel ratio before lens correction, trading performance for sharpness. - + - Finds a child by name and returns it. + Mirror what is shown on the device to the main display, if possible. - Name of child to be found. - + - Returns a transform child by index. + Returns a list of supported VR devices that were included at build time. - Index of the child transform to return. Must be smaller than Transform.childCount. - - Transform child by index. - - + - Gets the sibling index. + Loads the requested device at the beginning of the next frame. + Name of the device from VRSettings.supportedDevices. + Prioritized list of device names from VRSettings.supportedDevices. - + - Transforms a direction from world space to local space. The opposite of Transform.TransformDirection. + Loads the requested device at the beginning of the next frame. - + Name of the device from VRSettings.supportedDevices. + Prioritized list of device names from VRSettings.supportedDevices. - + - Transforms the direction x, y, z from world space to local space. The opposite of Transform.TransformDirection. + Timing and other statistics from the VR subsystem. - - - - + - Transforms position from world space to local space. + Total GPU time utilized last frame as measured by the VR subsystem. - - + - Transforms the position x, y, z from world space to local space. The opposite of Transform.TransformPoint. + Retrieves the number of dropped frames reported by the VR SDK. - - - + Outputs the number of frames dropped since the last update. + + True if the dropped frame count is available, false otherwise. + - + - Transforms a vector from world space to local space. The opposite of Transform.TransformVector. + Retrieves the number of times the current frame has been drawn to the device as reported by the VR SDK. - + Outputs the number of times the current frame has been presented. + + True if the frame present count is available, false otherwise. + - + - Transforms the vector x, y, z from world space to local space. The opposite of Transform.TransformVector. + Retrieves the time spent by the GPU last frame, in seconds, as reported by the VR SDK. - - - + Outputs the time spent by the GPU last frame. + + True if the GPU time spent last frame is available, false otherwise. + - + - Is this transform a child of parent? + The Holographic Settings contain functions which effect the performance and presentation of Holograms on Windows Holographic platforms. - - + - Rotates the transform so the forward vector points at target's current position. + Option to allow developers to achieve higher framerate at the cost of high latency. By default this option is off. - Object to point towards. - Vector specifying the upward direction. + True to enable or false to disable Low Latent Frame Presentation. - + - Rotates the transform so the forward vector points at target's current position. + Returns true if Holographic rendering is currently running with Latent Frame Presentation. Default value is false. - Object to point towards. - Vector specifying the upward direction. - + - Rotates the transform so the forward vector points at worldPosition. + 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. - Point to look at. - Vector specifying the upward direction. + 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. - + - Rotates the transform so the forward vector points at worldPosition. + 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. - Point to look at. - Vector specifying the upward direction. + 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. - + - 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). + 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. - + - 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). + Manager class with API for recognizing user gestures. - - - + - 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). + Cancels any pending gesture events. Additionally this will call StopCapturingGestures. - - - - - + - 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). + Create a GestureRecognizer. - - - - - + - Rotates the transform around axis by angle degrees. + Disposes the resources used by gesture recognizer. - - - - + - Rotates the transform around axis by angle degrees. + Callback indicating an error or warning occurred. - - - + A readable error string (when possible). + The HRESULT code from the platform. - + - Rotates the transform about axis passing through point in world coordinates by angle degrees. + 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. + - + - Move the transform to the start of the local transform list. + 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. - + - Move the transform to the end of the local transform list. + Callback indicating a cancel event. + Indicates which input medium triggered this event. + Ray (with normalized direction) from user at the time this gesture began. - + - Set the parent of the transform. + Fired when users complete a hold gesture. - The parent Transform to use. - If true, the parent-relative position, scale and rotation is modified such that the object keeps the same world space position, rotation and scale as before. + Delegate to be triggered when the user completes a hold gesture. - + - Sets the sibling index. + Callback indicating a hold completed event. - Index to set. + Indicates which input medium triggered this event. + Ray (with normalized direction) from user at the time this gesture began. - + - Transforms direction from local space to world space. + Fired when users start a hold gesture. - + The delegate to be triggered when a user starts a hold gesture. - + - Transforms direction x, y, z from local space to world space. + 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. - + - Transforms position from local space to world space. + Used to query if the GestureRecognizer is currently receiving Gesture events. - + + True if the GestureRecognizer is receiving events or false otherwise. + - + - Transforms the position x, y, z from local space to world space. + Fires when a Manipulation gesture is canceled. - - - + Delegate to be triggered when a cancel event is triggered. - + - Transforms vector from local space to world space. + 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. - + - Transforms vector x, y, z from local space to world space. + Fires when a Manipulation gesture is completed. - - - + Delegate to be triggered when a completed event is triggered. - + - Moves the transform in the direction and distance of translation. + 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. - + - Moves the transform in the direction and distance of translation. + Fires when an interaction becomes a Manipulation gesture. - - + Delegate to be triggered when a started event is triggered. - + - Moves the transform by x along the x axis, y along the y axis, and z along the z axis. + 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. - + - Moves the transform by x along the x axis, y along the y axis, and z along the z axis. + Fires when a Manipulation gesture is updated due to hand movement. - - - - + Delegate to be triggered when a updated event is triggered. - + - Moves the transform in the direction and distance of translation. + 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. - + - Moves the transform by x along the x axis, y along the y axis, and z along the z axis. + Fires when a Navigation gesture is canceled. - - - - + Delegate to be triggered when a cancel event is triggered. - + - Transparent object sorting mode of a Camera. + 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. - + - Default transparency sorting mode. + Fires when a Navigation gesture is completed. + Delegate to be triggered when a complete event is triggered. - + - Orthographic transparency sorting mode. + 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. - + - Perspective transparency sorting mode. + Fires when an interaction becomes a Navigation gesture. + Delegate to be triggered when a started event is triggered. - + - Tree Component for the tree creator. + 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. - + - Data asociated to the Tree. + Fires when a Navigation gesture is updated due to hand or controller movement. + Delegate to be triggered when a update event is triggered. - + - Tells if there is wind data exported from SpeedTree are saved on this component. + 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. - + - Contains information about a tree placed in the Terrain game object. + 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. - + - Color of this instance. + 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. - + - Height scale of this instance (compared to the prototype's size). + Fires when recognition of gestures begins. + Delegate to be triggered when a start event is triggered. - + - Lightmap color calculated for this instance. + 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. - + - Position of the tree. + 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. + - + - Index of this instance in the TerrainData.treePrototypes array. + Call to begin receiving gesture events on this recognizer. No events will be received until this method is called. - + - Rotation of the tree on X-Z plane (in radians). + Call to stop receiving gesture events on this recognizer. - + - Width scale of this instance (compared to the prototype's size). + Occurs when a Tap gesture is recognized. + Delegate to be triggered when a tap event is triggered. - + - Simple class that contains a pointer to a tree prototype. + 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. - + - Bend factor of the tree prototype. + This enumeration represents the set of gestures that may be recognized by GestureRecognizer. - + - Retrieves the actual GameObect used by the tree. + Enable support for the double-tap gesture. - + - Class that specifes some information about a renderable character. + Enable support for the hold gesture. - + - Character width. + 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. - + - Position of the character cursor in local (text generated) space. + Enable support for the navigation gesture, in the horizontal axis using rails (guides). - + - Information about a generated line of text. + Enable support for the navigation gesture, in the vertical axis using rails (guides). - + - Height of the line. + Enable support for the navigation gesture, in the depth axis using rails (guides). - + - Index of the first character in the line. + Enable support for the navigation gesture, in the horizontal axis. - + - 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. + Enable support for the navigation gesture, in the vertical axis. - + - Vertex class used by a Canvas for managing vertices. + Enable support for the navigation gesture, in the depth axis. - + - Vertex color. + Disable support for gestures. - + - Normal. + Enable support for the tap gesture. - + - Vertex position. + Provides access to user input from hands, controllers, and system voice commands. - + - Simple UIVertex with sensible settings for use in the UI system. + (Read Only) The number of InteractionSourceState snapshots available for reading with InteractionManager.GetCurrentReading. - + - Tangent. + Get the current SourceState. + + An array of InteractionSourceState snapshots. + - + - UV0. + 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. + - + - UV1. + Occurs when a new hand, controller, or source of voice commands has been detected. + - + - 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. + Callback to handle InteractionManager events. + - + - Version of Unity API. + Occurs when a hand, controller, or source of voice commands is no longer available. + - + - Initializes a new instance of UnityAPICompatibilityVersionAttribute. + Occurs when a hand or controller has entered the pressed state. - Unity version that this assembly with compatible with. + - + - Constants to pass to Application.RequestUserAuthorization. + Occurs when a hand or controller has exited the pressed state. + - + - Request permission to use any audio input sources attached to the computer. + Occurs when a hand or controller has experienced a change to its SourceState. + - + - Request permission to use any video input sources attached to the computer. + Represents one detected instance of a hand, controller, or user's voice that can cause interactions and gestures. - + - Representation of 2D vectors and points. + The identifier for the hand, controller, or user's voice. - + - Shorthand for writing Vector2(0, -1). + The kind of the interaction source. - + - Shorthand for writing Vector2(-1, 0). + Specifies the kind of an interaction source. - + - Returns the length of this vector (Read Only). + The interaction source is a controller. - + - Returns this vector with a magnitude of 1 (Read Only). + The interaction source is one of the user's hands. - + - Shorthand for writing Vector2(1, 1). + The interaction source is of a kind not known in this version of the API. - + - Shorthand for writing Vector2(1, 0). + The interaction source is the user's speech. - + - Returns the squared length of this vector (Read Only). + Represents the position and velocity of a hand or controller. - + - Shorthand for writing Vector2(0, 1). + Get the position of the interaction. + Supplied Vector3 to be populated with interaction position. + + True if the position is successfully returned. + - + - X component of the vector. + Get the velocity of the interaction. + Supplied Vector3 to be populated with interaction velocity. + + True if the velocity is successfully returned. + - + - Y component of the vector. + Represents the set of properties available to explore the current state of a hand or controller. - + - Shorthand for writing Vector2(0, 0). + The position and velocity of the hand, expressed in the specified coordinate system. - + - Returns the angle in degrees between from and to. + The direction you should suggest that the user move their hand if it is nearing the edge of the detection area. - - - + - Returns a copy of vector with its magnitude clamped to maxLength. + Gets the risk that detection of the hand will be lost as a value from 0.0 to 1.0. - - - + - Constructs a new vector with given x, y components. + Represents a snapshot of the state of a spatial interaction source (hand, voice or controller) at a given time. - - - + - Returns the distance between a and b. + The Ray at the time represented by this InteractionSourceState. - - - + - Dot Product of two vectors. + True if the source is in the pressed state. - - - + - Converts a Vector3 to a Vector2. + Additional properties to explore the state of the interaction source. - - + - Converts a Vector2 to a Vector3. + The interaction source that this state describes. - - + - Linearly interpolates between vectors a and b by t. + The storage object for persisted WorldAnchors. - - - - + - Linearly interpolates between vectors a and b by t. + (Read Only) Gets the number of persisted world anchors in this WorldAnchorStore. - - - - + - Returns a vector that is made from the largest components of two vectors. + Clears all persisted WorldAnchors. - - - + - Returns a vector that is made from the smallest components of two vectors. + Deletes a persisted WorldAnchor from the store. - - + The identifier of the WorldAnchor to delete. + + Whether or not the WorldAnchor was found and deleted. + - + + + 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. + + + - Moves a point current towards target. + Gets the WorldAnchorStore instance. - - - + The handler to be called when the WorldAnchorStore is loaded. - + - Makes this vector have a magnitude of 1. + The handler for when getting the WorldAnchorStore from GetAsync. + The instance of the WorldAnchorStore once loaded. - + - Divides a vector by a number. + 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. + - + - Returns true if the vectors are equal. + 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. + - + - Subtracts one vector from another. + Indicates the lifecycle state of the device's spatial location system. - - - + - Negates a vector. + The device is reporting its orientation and is preparing to locate its position in the user's surroundings. - - + - Multiplies a vector by a number. + The device is reporting its orientation and position in the user's surroundings. - - - + - Multiplies a vector by a number. + The device is reporting its orientation but cannot locate its position in the user's surroundings due to external factors like poor lighting conditions. - - - + - Returns true if vectors different. + The device is reporting its orientation and has not been asked to report its position in the user's surroundings. - - - + - Adds two vectors. + The device's spatial location system is not available. - - - + - Reflects a vector off the vector defined by a normal. + This enum represents the result of a WorldAnchorTransferBatch operation. - - - + - Multiplies two vectors component-wise. + The operation has failed because access was denied. This occurs typically because the transfer batch was not readable when deserializing or writable when serializing. - - - + - Multiplies every component of this vector by the same component of scale. + The operation has failed because it was not supported. - - + - Set x and y components of an existing Vector2. + The operation has completed successfully. - - - + - Gradually changes a vector towards a desired goal over time. + The operation has failed in an unexpected way. - 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. + A batch of WorldAnchors which can be exported and imported between apps. - 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. + (Read Only) Gets the number of world anchors in this WorldAnchorTransferBatch. - 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. + 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. + - + - Returns a nicely formatted string for this vector. + 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. - + - Returns a nicely formatted string for this vector. + Cleans up the WorldAnchorTransferBatch and releases memory. - - + - Representation of 3D vectors and points. + 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). - + - Shorthand for writing Vector3(0, 0, -1). + Gets all of the identifiers currently mapped in this WorldAnchorTransferBatch. + + The identifiers of all of the WorldAnchors in this WorldAnchorTransferBatch. + - + - Shorthand for writing Vector3(0, -1, 0). + 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. + - + - Shorthand for writing Vector3(0, 0, 1). + 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. - + - Shorthand for writing Vector3(-1, 0, 0). + 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. - + - Returns the length of this vector (Read Only). + 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. + - + - Returns this vector with a magnitude of 1 (Read Only). + The handler for when serialization is completed. + Why the serialization completed (success or failure reason). - + - Shorthand for writing Vector3(1, 1, 1). + The handler for when some data is available from serialization. + A set of bytes from the exported transfer batch. - + - Shorthand for writing Vector3(1, 0, 0). + Enumeration of the different types of SurfaceChange events. - + - Returns the squared length of this vector (Read Only). + Surface was Added. - + - Shorthand for writing Vector3(0, 1, 0). + Surface was removed. - + - X component of the vector. + Surface was updated. - + - Y component of the vector. + SurfaceData is a container struct used for requesting baked spatial mapping data and receiving that data once baked. - + - Z component of the vector. + 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. - + - Shorthand for writing Vector3(0, 0, 0). + This is the ID for the surface to be baked or the surface that was baked and being returned to the user. - + - Returns the angle in degrees between from and to. + 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. - The angle extends round from this vector. - The angle extends round to this vector. - + - Returns a copy of vector with its magnitude clamped to maxLength. + 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. - - - + - Cross Product of two vectors. + 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. - - - + - Creates a new vector with given x, y, z components. + 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. - - - - + - Creates a new vector with given x, y components and sets z to zero. + 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. - + - Returns the distance between a and b. + 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. - - - + - Dot Product of two vectors. + The actual integer ID referring to a single surface. - - - + - Linearly interpolates between two vectors. + SurfaceObserver is the main API portal for spatial mapping functionality in Unity. - - - - + - Linearly interpolates between two vectors. + Basic constructor for SurfaceObserver. - - - - + - Returns a vector that is made from the largest components of two vectors. + 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. - - - + - Returns a vector that is made from the smallest components of two vectors. + 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. + - + - Moves a point current in a straight line towards a target point. + 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. - + - Makes this vector have a magnitude of 1. + 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. - + - Divides a vector by a number. + 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. - + - Returns true if the vectors are equal. + 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. - + - Subtracts one vector from another. + 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. - + - Negates a vector. + 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. - + - Multiplies a vector by a number. + When calling PhotoCapture.StartPhotoModeAsync, you must pass in a CameraParameters object that contains the various settings that the web camera will use. - - - + - Multiplies a vector by a number. + A valid height resolution for use with the web camera. - - - + - Returns true if vectors different. + A valid width resolution for use with the web camera. - - - + - Adds two vectors. + The framerate at which to capture video. This is only for use with VideoCapture. - - - + - Makes vectors normalized and orthogonal to each other. + The opacity of captured holograms. - - - + - Makes vectors normalized and orthogonal to each other. + The pixel format used to capture and record your image data. - - - - + - Projects a vector onto another vector. + The encoded image or video pixel format to use for PhotoCapture and VideoCapture. - - - + - Projects a vector onto a plane defined by a normal orthogonal to the plane. + 8 bits per channel (blue, green, red, and alpha). - - - + - Reflects a vector off the plane defined by a normal. + Encode photo in JPEG format. - - - + - Rotates a vector current towards target. + 8-bit Y plane followed by an interleaved U/V plane with 2x2 subsampling. - - - - - + - Multiplies two vectors component-wise. + Portable Network Graphics Format. - - - + - Multiplies every component of this vector by the same component of scale. + Captures a photo from the web camera and stores it in memory or on disk. - - + - Set x, y and z components of an existing Vector3. + Contains the result of the capture request. - - - - + - Spherically interpolates between two vectors. + Specifies that the desired operation was successful. - - - - + - Spherically interpolates between two vectors. + Specifies that an unknown error occurred. - - - - + - Gradually changes a vector towards a desired goal over time. + Asynchronously creates an instance of a PhotoCapture object that can be used to capture photos. - 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. + 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. - + - Gradually changes a vector towards a desired goal over time. + Dispose must be called to shutdown the PhotoCapture instance. - 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. + Provides a COM pointer to the native IVideoDeviceController. - 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. + + A native COM pointer to the IVideoDeviceController. + - + - Access the x, y, z components using [0], [1], [2] respectively. + Called when a photo has been saved to the file system. + Indicates whether or not the photo was successfully saved to the file system. - + - Returns a nicely formatted string for this vector. + 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. - + - Returns a nicely formatted string for this vector. + Called when a PhotoCapture resource has been created. - + The PhotoCapture instance. - + - Representation of four-dimensional vectors. + Called when photo mode has been started. + Indicates whether or not photo mode was successfully activated. - + - Returns the length of this vector (Read Only). + Called when photo mode has been stopped. + Indicates whether or not photo mode was successfully deactivated. - + - Returns this vector with a magnitude of 1 (Read Only). + A data container that contains the result information of a photo capture operation. - + - Shorthand for writing Vector4(1,1,1,1). + The specific HResult value. - + - Returns the squared length of this vector (Read Only). + A generic result that indicates whether or not the PhotoCapture operation succeeded. - + - W component of the vector. + Indicates whether or not the operation was successful. - + - X component of the vector. + 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. - + - Y component of the vector. + Asynchronously stops photo mode. + This callback will be invoked once photo mode has been deactivated. - + - Z component of the vector. + A list of all the supported device resolutions for taking pictures. - + - Shorthand for writing Vector4(0,0,0,0). + 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. - + - Creates a new vector with given x, y, z, w components. + 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. - + - Creates a new vector with given x, y, z components and sets w to zero. + Image Encoding Format. - - - - + - Creates a new vector with given x, y components and sets z and w to zero. + JPEG Encoding. - - - + - Returns the distance between a and b. + PNG Encoding. - - - + - Dot Product of two vectors. + Contains information captured from the web camera. - - - + - Converts a Vector4 to a Vector2. + The length of the raw IMFMediaBuffer which contains the image captured. - - + - Converts a Vector4 to a Vector3. + Specifies whether or not spatial data was captured. - - + - Converts a Vector2 to a Vector4. + The raw image data pixel format. - - + - Converts a Vector3 to a Vector4. + 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. - + - Linearly interpolates between two vectors. + Disposes the PhotoCaptureFrame and any resources it uses. - - - - + - Linearly interpolates between two vectors. + 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. + - + - Returns a vector that is made from the largest components of two vectors. + 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. + - + - Returns a vector that is made from the smallest components of two vectors. + 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. + - + - Moves a point current towards target. + 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. - + - Makes this vector have a magnitude of 1. + Records a video from the web camera directly to disk. - + - Divides a vector by a number. + Specifies what audio sources should be recorded while recording the video. - - - + - Returns true if the vectors are equal. + Include both the application audio as well as the mic audio in the video recording. - - - + - Subtracts one vector from another. + Only include the application audio in the video recording. - - - + - Negates a vector. + Only include the mic audio in the video recording. - - + - Multiplies a vector by a number. + Do not include any audio in the video recording. - - - + - Multiplies a vector by a number. + Contains the result of the capture request. - - - + - Returns true if vectors different. + Specifies that the desired operation was successful. - - - + - Adds two vectors. + Specifies that an unknown error occurred. - - - + - Projects a vector onto another vector. + 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. - + - Multiplies two vectors component-wise. + Dispose must be called to shutdown the PhotoCapture instance. - - - + - Multiplies every component of this vector by the same component of scale. + 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. + - + - Set x, y, z and w components of an existing Vector4. + Provides a COM pointer to the native IVideoDeviceController. - - - - + + A native COM pointer to the IVideoDeviceController. + - + - Access the x, y, z, w components using [0], [1], [2], [3] respectively. + Indicates whether or not the VideoCapture instance is currently recording video. - + - Returns a nicely formatted string for this vector. + Called when the web camera begins recording the video. - + Indicates whether or not video recording started successfully. - + - Returns a nicely formatted string for this vector. + 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. - + - Wrapping modes for text that reaches the vertical boundary. + Called when a VideoCapture resource has been created. + The VideoCapture instance. - + - Text well continue to generate when reaching vertical boundary. + Called when video mode has been started. + Indicates whether or not video mode was successfully activated. - + - Text will be clipped when reaching the vertical boundary. + Called when video mode has been stopped. + Indicates whether or not video mode was successfully deactivated. - + - VR Input tracking data. + 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. - + - The current position of the requested VRNode. + Asynchronously starts video mode. - Node index. - - Position of node local to its tracking space. - + 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. - + - The current rotation of the requested VRNode. + Asynchronously stops recording a video from the web camera to the file system. - Node index. - - Rotation of node local to its tracking space. - + Invoked as soon as video recording has finished. - + - Center tracking on the current pose. + Asynchronously stops video mode. + This callback will be invoked once video mode has been deactivated. - + - Contains all functionality related to a VR device. + A list of all the supported device resolutions for recording videos. - + - The name of the family of the loaded VR device. + A data container that contains the result information of a video recording operation. - + - Successfully detected a VR device in working order. + The specific HResult value. - + - Specific model of loaded VR device. + A generic result that indicates whether or not the VideoCapture operation succeeded. - + - Native pointer to the VR device structure, if available. + Indicates whether or not the operation was successful. - - Native pointer to VR device if available, else 0. - - + - Supported VR devices. + Contains general information about the current state of the web camera. - + - Sony's Project Morpheus VR device for Playstation 4. (Obsolete please use VRDeviceType.PlayStationVR instead). + Specifies what mode the Web Camera is currently in. - + - No VR Device. + Describes the active mode of the Web Camera resource. - + - Oculus family of VR devices. + Resource is not in use. - + - Sony's PlayStation VR device for Playstation 4 (formerly called Project Morpheus VR). + Resource is in Photo Mode. - + - Split screen stereo 3D (the left and right cameras are rendered side by side). + Resource is in Video Mode. - + - Stereo 3D via D3D11 or OpenGL. + The WorldAnchor component allows a GameObject's position to be locked in physical space. - + - Enumeration of nodes which can be updated by VR input. + Returns true if this WorldAnchor is located (read only). A return of false typically indicates a loss of tracking. - + - Node between left and right eyes. + 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. + - + - Head node. + OnTrackingChanged notifies listeners when this object's tracking state changes. + Event that fires when this object's tracking state changes. - + - Left Eye node. + 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. - + - Right Eye node. + 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. - + - Global VR related settings. + This class represents the state of the real world tracking system. - + - Globally enables or disables VR for the application. + The current state of the world tracking systems. - + - Type of VR device that is currently in use. + 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. + - + - Controls the texel:pixel ratio before lens correction, trading performance for sharpness. + Event fired when the world tracking systems state has changed. + - + - Mirror what is shown on the device to the main display, if possible. + 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. @@ -45221,15 +56696,26 @@ Useful for restarting a trail from a new position. - Suspends the coroutine execution for the given amount of seconds. + 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. + 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. + + + + + 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. @@ -45610,9 +57096,19 @@ Useful for restarting a trail from a new position. 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 speed. + The current joint rotational speed in degrees/sec. @@ -45641,6 +57137,453 @@ Useful for restarting a trail from a new position. The time to calculate the motor torque for. + + + 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 semaning 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. @@ -45688,12 +57631,12 @@ Useful for restarting a trail from a new position. - Wind zone only has an effect inside the radius, and has a falloff from the center towards the edge. + Wind zone affects the entire scene in one direction. - 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. @@ -46431,121 +58374,152 @@ Useful for restarting a trail from a new position. A string with characters to be escaped. The text encoding to use. - + - Returns an AudioClip generated from the downloaded data (Read Only). + 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. - 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 your downloading. If this is not set Unity will try to determine the type from URL. + 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. + 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. - The returned AudioClip. + 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. + 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. + + + + Loads the new web player data file. + + + + + 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. + + + + Provides methods to access AudioClip or MovieTexture objects from WWW streams. + + + 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 your downloading. If this is not set Unity will try to determine the type from URL. + Use this to specify whether the clip should be a 2D or 3D clip. +The threeD parameter defaults to true. + Sets whether the clip should be completely downloaded before it's ready to play (false), or whether the stream can be played even if only part of the clip is downloaded (true). +Setting this to true will disable seeking (with .time and/or .timeSamples) on the clip. + 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 your downloading. If this is not set Unity will try to determine the type from URL. + Use this to specify whether the clip should be a 2D or 3D clip. +The threeD parameter defaults to true. + Sets whether the clip should be completely downloaded before it's ready to play (false), or whether the stream can be played even if only part of the clip is downloaded (true). +Setting this to true will disable seeking (with .time and/or .timeSamples) on the clip. + 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). + 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 AudioType of the content your downloading. If this is not set Unity will try to determine the type from URL. + Use this to specify whether the clip should be a 2D or 3D clip. +The threeD parameter defaults to true. + Sets whether the clip should be completely downloaded before it's ready to play (false), or whether the stream can be played even if only part of the clip is downloaded (true). +Setting this to true will disable seeking (with .time and/or .timeSamples) on the clip. + 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). + 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 AudioType of the content your downloading. If this is not set Unity will try to determine the type from URL. + Use this to specify whether the clip should be a 2D or 3D clip. +The threeD parameter defaults to true. + Sets whether the clip should be completely downloaded before it's ready to play (false), or whether the stream can be played even if only part of the clip is downloaded (true). +Setting this to true will disable seeking (with .time and/or .timeSamples) on the clip. + 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 AudioType of the content you are downloading. If this is not set Unity will try to determine the type from URL. + The returned AudioClip. - + - 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. + Returns an AudioClip generated from the downloaded data that is compressed in memory (Read Only). - 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. - 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. + Use this to specify whether the clip should be a 2D or 3D clip. + The AudioType of the content you are downloading. If this is not set Unity will try to determine the type from URL. + - A WWW instance, which can be used to access the data once the load/download operation is completed. + The returned AudioClip. - + - 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. + Returns an AudioClip generated from the downloaded data that is compressed in memory (Read Only). - 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. - 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. + Use this to specify whether the clip should be a 2D or 3D clip. + The AudioType of the content you are downloading. If this is not set Unity will try to determine the type from URL. + - A WWW instance, which can be used to access the data once the load/download operation is completed. + The returned AudioClip. - + - 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. - - - - Loads the new web player data file. - - - - - 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. + Returns a MovieTexture generated from the downloaded data (Read Only). - A string containing escaped characters. - The text encoding to use. + diff --git a/Library/UnityAssemblies/nunit.framework.dll b/Library/UnityAssemblies/nunit.framework.dll index d8748ae2f58a8569ba8a489fe05dc6375a74c24e..675e6ce155479171abc21da4c10a82bedee5bb33 100644 GIT binary patch literal 327680 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

rAYys*PX^O6cD zS=gW$rM_-Y&&t)V|dg5b}6lU5c)xd_0A%$S9)7wT*5o>uX zvzBktAn%B8^l+(FlbuyRWb^So?0~c_n{-3eELs#*Le2tZn1L6LMM(78{aN-r;i#(( z->lHY0GcsTtn2jE26te2*x-)pRYxZFe)Pb)E1q|eEXnd3i0V}vX4jX>AHh7Fb*NN4 zagu0(!6auNAx#dE2run-UcZrByGwSfZky>StrrK1gin&>P@hckK8I*2*u$xh#}W~^ z>cJ=q*)q90*`%;>k_`4J05=tNf?z7z*N?TQW0}kZ^(VtC6Xnma*&x1TBC+-g>nA~a=pnfJT*ZA| zE;ihJw>yZ}3z~es(o?(ANmOr`YcqR*@8Ob$GrxG?xJf0NY!{Vy1f~Vg1x%8n?75a?1cc6jWV$>-Bc!!m1!hN zrd+dlbzam?>r?$j6^3}O^AZXQ+oQs|MYcUrVG$HIFdmcT1CKRuP}L2)1HCp?4P@9% zY)qglw~0SYIM?_0*q_y{l4b;6ie+;D~7eygv)r+!6&HSEORv>26P zx!J^6f=zWcF%Aof&#DLf2>F5|?0y=!3&L9Um*lS51GGMEF{jM6IZ>ao@N?$o z``)#1&MIebqx#s};Aw9okG+jN_BQg^+sKprwI;E*5o~)KHL-q9u-n@RW^W_d_BIAz zGkn|ID5LFdgrU8S)xbf45;!QpV~=Pa=LL%7yg-q>gHj&*A3W`U1hM}S-QRQjAM2+Z zmW-qg1K}p9d=BQCGXn$ij$OapDx(!GSRqWh@ib#bQgnT)!5>pw_yefP?o$nRSG3q& z`-+%mq(>PiC?gD1~60;3~E<;IrDa_xGTL9oPf|Ph6e&n4fET13oFpuSlr^WI8vN-ozQJIubwgy z&kN6F?pNO6-gWg7lnAMA#t2agv)yXnW%JjhJlWbFwou}22lE5W4R_hY-{~x zb6;!>EQkMoRF|!`!bSFOZRA+HH0_6Abk(Jo5Pnw=lKKg(lF2KRxAL=UmqC?xdMfWk z5SAtUMG#`2KS5gk@7(EfOX4fe9`f!CO;2KbX4nQA#t}oCw8qt#agSkqea(RS1&uUj zB2KK^p`?u&h6SNGdv6Q70y%btAJ;H!vgxtri!^I#mDMZr9XMporc8p8#W;GI&^yLV zEM+aIy(EEDDyip}i?v;iwlVM69Lif0*YXCqMf=*cy(!tQQbIFMnfY|ElcSkjK(KtV zg{*?c#Fei_zFiL3rsx(AnwSZ-yOd#YnA{hz~!+oT8&MrdtpAiZqUM(g%id&mAe}eT3IP#*QP8E5x#Dhe1czi zjg-@Jr&Oa(EoZA9JCC-9MU{vMC6|CMWQxwk9wH1w^O{{N4VzMWs<&xr>ks$ZQ3rb~ z!PTq$SrzLnG7&ZFll&2Z>$0yOX#*;6>`f%?4uw@SmK@dyd?Csp#0s+z*i7K{BXPKp z>5R=97zvdn)aHtM{TRCmUCO9H6+thkhkc8++BQ`1$Uj>dNstCQx0gH2Up&IA)XE1V~?qN#EnVv^`5jvP47%O0Vpq%CBJGB~HJI4I2 zu(h_GFbrn=wKj#2QyEiwd$9#}sG;mmZ^!G!Lp_2`NT0WZ|A}~?-hteS8{K6Q+Y8FB z9Dx+cR1#0n?0&htpO%=~g1M8pI@Bd|Z!1oS$+@KPFUjTEt?;zDr_3#zJ7w;3=H}$` z?8fEUt+2(^lL~WOCwE*ma%d;_b-9(-+xlQE`rXpU~t%|rX zlfu4*zhmyp;3cf^_kcO*P%ImG!t33weRht)#R(HRI&~02?Fe+~vJCq=)B@XL7A^0% zO5>b>5~{l`+^hKNC|Noz)U7o3{VHhMVqR+@rsPV3!`R)E#_nG33vzi6XF}M9Vtddd zG(6P=^Hz@ED59$3wUZ+=M-YU0*Nnn$yv`|xEeSDfG~|}ey8UM6~1KQQ43pF>ZdGhrLi^>&U5DGGWVGtzTx;yfFu*)7kW(MTF_YgTq6afuR9mTD(I1 z9~uaP!q7;1W?*bIGc#An76*dDNH!e|%oeig?C@+5WCjWYg~5@r*}~vZW^8C^E*L|X zCq0%O92}elF*7$73>OAQio@B_v7z+vY_>QuH!zsa7Dk5)!$Y%~(b6`W_GkVGBRAqW@m=SGSGfz zEITqhG%_+cHWv&QG8y7&RB?EukoCOYnDSiv9kX)xgg!1*-=qmKIBec|Pa#Gn@%;i*dYESSdX+UpnR8yp+R>MThZ; zn0Lpvr5r7kW+`EB%-eH)de{U$sx%P8Drvh`Hrn7Xt@sA4y7~^pyuNL7ge?+2!4UgX zG4IZ8v8{E&wLm~qG;6j+ePF57B-&ju@278y)oAnwl-3~LO@}~rh6H3p-ETR@SItb} z?08`=D4jpLR1C(SIF0*-e*gZ}hYJg5f(i7|81C^Ww!%$>`wFPQ2_cBYi@$H&Up%w0 z0FD(g{=~1Sq%U}0Pt5C@SUR&<8h^q(qDEuhP^gqQv9z$@bnjLVelA!HR_13RQxs>? z;$*P$@O*G~dcgBO8ABtQ7mp#}y6#@+L(;m}mtp${%i zXe}R%rboXg8`i%L3tEha@a^i;gNwn`{ORC$Pm#++^x_@pv2M#eMtyO{p$AAhs+D}CR5{0G0@pZ(|eb91F1{OoW3eEo@k zn)va_UwryUej@es9pC#@vOkvm)i1rh@$Ek!|Fgk#+wcGFyKgOj>l^pH`qn3|#9RO5 z_rCnt_ue0Q`!j#{*Oy=U^zZ&!>))@BJov*mKKJHJzx^NC!N2;ge_a^u|LRg~*V$M9 z;Ltag@4Y?W|2wb!+gmTa^`k%i3X<6KUj54-o{+zT|2+D<dI{19+{0NX1=jR$uG@3o;MM- zIm@Oc%yMx?_5W}B9orpmH1~0Z{RX%tkl%#od5=vjt>hLKj%r0Lj{oX$B9==!l(eHnf0x_?f>i2kFd21`&Ba9{a4e`R8UT*o9_w{gzhaw{Kf5B3*gTU83-Tcb|#3)sE zX!<~=%micuAhQPj_FFDlFvw71m2_E#&6CQy)P66vWN2%QHp$e_89&@ul3wf^!we|; zm%(@g8hCdQ8?$e(pKe&enP4I9Gu|zYG+D|mVn`Snt*hz>JZByxa}61#&(Q*XPhCb0 z`kjFKu|}`9x1ST<=5lWQV4v^xHR?Ixw{M4;f$5o{nD5{P?4l4ASxn_-GhO#XUCj? zH3xRZ6~Ua-ns!}RF^jBWaYZqQ)m3rb^)Jq|pm;rQ&VqnfI!V*Rx0aeE4}pJj{w_dIZj zpW53(_O7rhgxFvS(V(asg;e1N_(H^)UajmV0@=@hM}QCdttU$4Yt&f`fQvqdlq}pk zp?6A+yd;pqw`34Wjl*Ph;l?zE}xqT z659qFl?<1G5gaANsHWUebF&a+TVXTHRc|IY+C=&}@N)_LTmnCrz|SS{a|!%h0za3) z&n5743H)3FKbOGICGh`M3E*9u^GolhQiQ~rtAxnxWQk~5DU53nqP>jP5&Zaye+>J6 z*7$eZUvA9Y*5kk(-{0xgYd;H3d+WJ#=YILenfE-rV)tqJ9d252(#mu8zxcN!e*NuX zuY_K@a8GN=lON37Wz5>D*M1v0bK58S4Xde`+c4)U5pDkdjyWSwzWMxbhp+8=-f!N# zZRXPDbLM*Q@33jF#@&v7@8m86&zgSJ4pYuQdCj+-pXvVVZoBpCCB3*1u~btI@6+@1 zwFob4${lIKm&?XzTOFv?B3)x=I@?Q*O$>=j+v~zKng7ZW?!rE@&coZgn`&lR4Sq82 zCw^S4T@>Ro_{q4R`Eff1<1+ZkxEuVq$a*nd1}SOR)p-e`Bk1U$5VeD)7=j8!DaGyV z$x^s6ua6~MS7zG*8hbdQ{6it(R=DBpFF*)qp(B>(9HtJCi?C*5c})F6hP_CfnVo8cn#^ARXb z3WiiEh#rF-F&24%q4Bzy?VXD<&3LwV7W@i33$h!o%bo``V11}E5?e3UC&L*OZxY4( zh7wpGs)~Z)O0CsRQDM{5mK3qxB7{a^Ni2aSJrN_S5X~YoLeZ63SY2~dBc!ccFT-7A z{#u*rE98~pI)x9={9v3JYw#5G@Vde__-d}7hcl0=oMxy`t&Low%-Gg+hJ zA&Jii12mIvkycE%NGq0AfVP#mBc#_D$f^%@3=RE+e6B82A9gG}+g`LkJyPs?J0cPP zaqfVlRcy}jlLqGi)<$l*wsKBUTNx*y?LgK>Zn?H{PElJKC!lQ{Ya_Q@TREqwt&9`U zhVd2UMsB&ba!yfO8OPVwOuc9)$7?{}m}(+WR}4dl=?BQpme&p4(cGf!*Z@t71xS9( zU2IumqQTlQAN%GkRE>h$rfM14u4wUo%h(cIYuf@lpqyI=JxG$9OS$q6*+u0Yu>;Dv zu_)yfELYwkyQsV)c0f6|9i^Ot<;pu`7nOI!4k+iQq?A*zTzQA=qVkT|0p;VVohs!N zELYwkyQsV)c0l=rqH+qBEANn9RNfKWS3bd3Mwh58C2B<_L_a#U>|udU&0rnL$G*H# z(k;;5ONr&lk)$6TV+&`dInY^`&~)S=Ef5zk9zDFWxJ6nquA%vHFnqLIWcCd9(|*8?#yr6UnVGe#C^ zeq3q+dzQ5j#yXDA_vL5E;qH<(#6nGEP7njf?go9v#bUE9Vrom2m>vXdtxJysS)HIj5+tj1$mC{kg4r^)hYc zoT9cePCy%tqxK>mP0O^EbBfx^IKDP49+Z^5!8)doefiSXF>;G7iaEv9>Fq$bLgECp z1zJa$wsKBUTNx*yEzmm3w3Ty;+R8WqZGqNNrmdV))Klr>L!r<7=Z96Vzd_j_G4xzO+S+*kX%fPBHaBiy}@yTcCB6 zX)EUxwUu!K+5)YkOj|jpsI80>&=zPNW!lO)MQvrAfVM#EDAQKXDQYX@1hfTON13*A zPElJKC!j6RI?A+_bBfx^IKDP&F+m*$>zF?FxoXbZHCGHvCY zqP8+lKwF@7lxZvH6t$Ic0@?ztqfA>lr>L!r6VMiD9c9|eIYn({oPf4K>nPJ!&M9gu z;{>z?T1T0-a!yfO8OPT~EhebLU>(!PM&6eB$FPR)Pp>hxRoIu;*q67lhK&Zmf70uL z)t1JH^m@Y2bXU^={fb9RWwd0&+Y6g<9G)>`=U_Hygs={8iB8arRrz=u7W|!9qMbaf zsxnMYVwiGM-T7q-UNusImr-7g@@mP$W=|da*uGKZgz}Qg>#DqN?&OaNzPk*f zwWjX*^)M0MZ?W17ZzZAT1g{3>ZwrF^mE50|cc}6nQn5}`-lOF8vh%Zv3BN^S)&qQ} zru#mt1pPrx_x)vrM;G5~@=SmrEsK{hn6Nd*HK_WM7)(Hn<>d?}fbj$|;6Fuv_k3FC zf!Yv}eSa5i^J2|se@y-dhvTA*EKyrkYzYUo1cza~+IT{#PvTZAy_vi|sSNro zOdd0rt)&txrnt9QchDxtGm$w9NJee+`blt4*`*-25Vv&0j>W zuD9XvVSQXCve-+DRVJ#^eIwDOvE1vHnD1t>j~2^f*DOZ+bFqw*tXN+eO-`zcMwT4g zyf%>vr+hOgdGxHg;+|V>oD}ox`+3-1jI~o{Q_H1yCd8yS5TpV&`y83S0)zq<+#K0T zt_QemAxFX?27f#nCqQ^;KuG@+Q+Ph5dJ!M7Ez1?R*%89 zI0_hPqg_%~a%aP&#Nrw-vuR+vE{ld68?e52%*{3;*mf0Z?u6VUrs*vW(+Xve}(MP7Gd`x>+VwV)y0FD0`3!^wUnt9vtGmc9;lUw9Ebo3mPCi7G=NY~QHa0+5YW*m0tY~7@Ch6M0bP%h;J{dI zMebx2MgiSU&@hIG!hWeFx}2aSLr7|0Wxkk06hD^@`(&<9KyfHzH~g`t&5;Ix zGs6elRYn%j%XHmFyDB}-U4!0AkInUw1=L6yYaM=WqpcuB(u7K#a6YlQHpg0v1B-VAo9;y3{tCM? zjn1FjU4N8%gnNhOkIeTu+=jtHZC2@XI4&#;QZ z0iSR^>>~nlKwhRs`F!foLw_7gTZsZEQf!&1!{D3+53`fPRFkXLE)Ybw$3jTO_gM-U zlSgHS4%B%Asm`cQZ0;9q)AppDvF)_0`kcaEh?t0_d)n^O1y5mc%XC6$C50Lt+pSyf zqAx;ENMd+1`wLYX=Ac>imP4~;9WVd!u?vpjZ-$!~`ZL`^ zEhs*^D9%9=r=`&?h|ejCbCB#H@uJ0fS~~V?n;Xt?6vs3VMmW4fVw^~c?7R|LMrc5^ zNLwOyLWvlo30ll+gs^Xps{R&|E|w5OJm?sHXj!2RGa9FWnVNoY#|#t$kCQrmb54>u z=w;9~JE>)x3v>+%;1NBDfpjQEEH%`YtyDGHXV?lgN22*ml*XwnmeXhsPoDjUGEU8 zRvOZHu6sOu9@AQ>Qe&=}=%e;UBmQ%@BbM|E(4?Z~&|PVQY^93!&LQ4JQkz@d5l^;K zJu9(8NsQAD3CxcK-mv1b(aoVlo}ZHH-71{>2T(ec`vG2z-;`YS5{s2TxjgJ)LQP6& zKA3=xI?@rdD_mZ24zruTiVE>3WOk=b0+O*rSLi{X3O#Nnq7G`x`Gl=M8Gl4s{1bK6RVhFFDU_ux zbSZmNZ7?xXE8Hk*csiyoT(9%v1b*g(V5<;>2&-&q*qAmo}&Qzj3(sw}x zG!_TzZ?<#`eFPe+oT29T=J8Hlv# zKaQrxLd>vp3z16pNn}^)v$JQAama|{wUWhl0qv3|188>+jnj^IB}sguZN>vn0=BZl zPGVKGl|+3)SDIj=xuLruH?h&eT9b}KN!ht2WWg%7Kt*H=xV|xirgnw)LUChma`K)M zB>Kneph$Q3HJwQ&`3Wmvd+cNU;3|Q+he1c`ME$&H&?NY|#}XSR!FB5Sr+192N!LQZ zN-{NSU0k+O^em=Au~Z_3g1g)=I4ES+Q`BZUQlR)sO+dl@9V!qu+6AWS{3jjNZ0y3} zNPLZp8dRSXwGw7sjXiQNL6Kw%_b<6h*KauLxv|9pXzLbiXLFzlk6$8}fUK>e726xy z0_jg?k*`<_UgUdJgqIwPlrDsHFr{J?8BQ!MVBHASOwCfZQkdHW*h%jkY)%>GnXnc4lbXk)US=v1eyd5V1@j2DwqB7YhBopP0K66L+i8uB%4Rr#hNO zbRVR@Q6^J%CgOtxo*^RJS!j=?sE8@~ENHRR=-f1D_CScWQ{vR?k*VC~sn?@1T=E#+ zlgefRdNwq&47NG&pvCCPm%0zDP<_~dK(F=LmU=DKXY~-tX4Pl;~}zR7Mz&GG}HFZ z0rnoG2!t@9NEZ>N4FPm+iDb<1P>-~}LSt_)S2t8t>cKThCjrU>4nh|K$&{y?$5gCeI5Pn0E( z6Jar+(To%Qks3dQXcMF^%dItF)ND3tyfKRE2_u83r+R87E;oqGwzl%??G|bv+%^=y zh?^u@q9S^KfY~t=|7tQHZRt7q)RwptK006(C9#=Rcw$ggXBevvfLfxlTBVep#mfSE zh^_Q+d&aCzG*BM$$abu73@PN9Ju2c@0Ef%FB3&2u$7K?6voI$%AgqSu_t(e6JS0~} zGFWd%zGH7tzo^Q&UNr2g%DGv#QsgX5FnbZ@ZG_S+wh?MawxDs+hK*Q1*%ld82EfH9 zw9iwqVJ%7^8tRP%EQ_3UDSs-z9onKtCT06mStX$JDt;WWcgV9wk;$6vf<|%ZbL9 z9BijQ+Hz3m3<4uAM!K6&#WwGS@PLz_hqw!i!j9TKq46EU&p_BI7nZG*p1qP1aM;ae z$$+9g^9jO+|5x@^dl5xhfVJ34<=GFmu!A%;w}aufx5h{^tUwo~A~LKj z!ZzLNW&Upz1;vMDu>6-4MkzQnnT9#e0<CdPUKj z`y$ep{Ty^o1l_J7pnb4KhQJc;5X?xJv;mQ5*QLz3FdLWpFpc+QBPZFMY`3Dq&k(y2 z`!hxDUBR@QpJn^@fPH<)KJP=4>zn%mZBU(n2xz4xP|9Yx-po2p|0g2T=>|Lwu>zWd z?yRs_-byH&2c5c4bTy1ysKsEUAz)`QQRIUX%sP?4Y?(g^egXQ5{T`Ii@_Q>0vnPYC zH8MU$MPsI&T?mBgrWnP#z;G@4a$RtYR>;KMI_C3O9S1@3t6>55@nSTSYz4>2RwDD; z96zKqQWM4IcSqTRy2cc%gvR{*OcXd8wic#$PMfANUsIvc)ct=b&@A)AAm@GC5oic< z&Ip1X4Zy4*zkLbXnb3DiUv9T325yH&_-2_qFbJjw!EpwVzJW$V$r;S3Qj^~;m>j=( zdf!uW6!lb;rb1&RzmPL%`2`gcD8HqsB;0bhrqCHqML|1|co_^F=TvmGlK`ELVJbS> z0_*&$&XsX@Eyc>ENj% z;qfXHFXR0O;&ez=X-BtGroD_u+Ue-365n$(@iHEXKVif%T&e=0C0eCne^MEIil$@-!T^7zg~Ghj!Y_BbuD1uQN2?(d0|wk3G+-+_itB^|tF7He zW2%O#r?yG&7z4;Ybt_MQ$+z;*((S=0h~mfuF74lLfN_R(S}qL;iE9TVw6SC z!jq~)PziRH*CBJc9bzSt!Br}JUU3gvW~$lF9Rev8AM+AksJJ`W1-Sf~J{lO+`hrH- zlX3G?>4C`~MD8-(B5kaN90gT@Rb=TMT=M8C#E+i8l0)z8<53^mQa$@?(v%3Vt$b6a z&&{5Jd@eb*fccw)m6kIV!ibNyNi~gneFnb zteu;WcuFM~veK#!CZ0t_?b|=Y7)@QI+LlLNFr_UkSYEdZEDfV`RJ|4YM)X!x4n1HS zx}0J;kV@LyKu%{+Q73rDIGuv1B8r$v+Pu9cTS*@Wd1oz!2{2Q}kS({{xd*5mXwltg zJcY2l z$)uLbR??TfA9`?}{yU_m-!ts|O(r#rQ(Eqh4rtiZ(pDAa?(BeeR|mAaJD}au0qx!n zX!jLqG+(Ekd79``_S7;R4_$wMGCk|7i(cby9_%nGmd`J+V(yi8evIB#>q0x1l5g5wf=c zC!2cMxzi!3Wr()uE=(e_XQSomV)`0Ncv;=FGQ69I#QoY9N6j^QhLm52*$PiMLhO14 zvR*Ic^$Mw_yadT4@py#T#W!ugP*Pn$%Rq{KmZDIIx3eI1hLS>IuoU|&MWIj&xsYlj zDP1a^@uiQ>+v7wA%>I!A)StNGTI9jQGwX!#CeCewGV9?qtQ%9i*CF1+-Y#Req3?3k zK{f1&DyBNj7*4u6kbM*p)5GjG^lXkgs8$&%k&PskLKPv>RmY5QOc;lU+L$3*>1oV9 zq0EK7xGxg+4kUZC=b(N<>~1$k$N3(Dot!KdM(}dndJ*Ezsj%D7-)Xbi6pF`JAmN~A zSO+-ql--6p*P>NXSX~s2!s-B0@>G79veMa9^m%+iR68sP7?V8@iFI;zfeDykaK3^z zQY0AcorYL$>!nCM)7NdijQk$bc3UyIb==lV;C6D7lloUX>PgTd-R;~WYT`4Hh8_pin~0L{R0~g4yvzM3GVV} zGQ2#hxUie-Ujsiw_H)89m41cWh^6K0ZnSD0Hwi1J!aOL`jsK2sa7v+_8WEt;4 zc#_Z$#onk(MbM7*JIl_Z;V?SlpvwDL_&?dkhwSsOHSj)u>)lENM|w8SM~o)}@R$1# z?XjJDpWKuxgs5-HeLx|4v~yECAw*AZ?iLDB!^(X|A!Upu7lB5Oq#ndR_|5E#lspx^1X#bbWHw*HMAcx@%jf=jrXeD1S z$kU7t%idZ5Rmigs@*#lt{aEVv#ijMYI(#NkBnMX9F_+@?;i;;K{&&{!X~BQ9HGG;X zlGS8AIud$;L%$TmSu7lEK;MKxl5okQI=V7mvjc0qH20mqj65 z66FLP1=h8b>>PjRKlcLanGcM>QWUJi?~2ExoSL|w-s-uLM69EeBUlhP1d77?osl+! zwsLX=0{|t9`bL^+4WLo>wE1p7ouHwE88Wvm3GoS_iE$o$QNNWXY-DmF?8Qs@{lAe`G7sg0>Q7TPaW! zw3J}LUgER86o4X>IoV6zWN%rCy^_zFH3!SpFHenHL|ekEjLnqcz(+S~wh2cM3u3bUE;+uAX<4D5N(TQas+K=unexz$_ECN6Ro@qh_*%L z96=W_Jqg%f-XHDE!wUrNIFJd9VmyOGJEH#LxA4(tn0ZWNTpjA!)U~rvPSa>ArDVtP9s?6e)}u8qevn zH;_ae^JSXfsL50F%i;RNlw7(poI8Zdfi*@kKdMR${u|q-t{hjkaUKq_gxG=dFnoW6 z*xZF+6TPAsjsMkK_&*5rBk_+XK@{*0Qw4@TfoTHz zs`_b7>0ys^u;DCtJE1;7Ztxm}P^b7XjS=)e3=I+=J4`kC7C zjxVC4-CVwiCcC*)ifCUq_lqLh+0C6*M1$Pi1x18cg^Pf~#TNustmz0Y80VT&_X6-6 zt0@L)k@yLyfk?%092vRRG|7B(;WD z>7X#f>aoyIN0W@ExC!7($DpPr>884vvEU`Y>*UW}GgbD=2~^WPkXmEHUN9aYQ)#ax z-@6q=^r=Z&pS*=i-k)Lc`XqJCv|%B0_kgE5X0=ar6!Md#{P=6MU7&6A({CNk{xHF% z*`GQ$oCzN2`S;EZn^|3OIhx(Co@yz0`!6W(j^z5_H?M$gy_NKEujSmn$Q6z zG|q&MFdi%pyo(o&yKM{H$Qt@Lg~>#^B&ybsB4WoIKqxRpWVb`~Mm@jfCE zXB;mScH6EZw>$E$*L@d|y%dk_u9My!9FJUQocFQPO}3H@+YFgIS%zH5{8htlz?l6Hr2;s$ON+5w6B})6<yz4tI2r7q% zp?oCD!QsYT8QIeYA%y=<_}>Hn!xqCKLmz~ul%ootnm4`#&Ob!jp(2*4MUVRkq2IxA zz2C!4nOL}hg(V*)NiIlM=12Jh$aAH~o~q`Guuh1|p}dwit5M1a>PqZv@*Zkn*|V(ixC?_0e+S$!;-@kGFCYTIP>kj~U>Fgc95>ZQ~O8hbe! zq~=O(-@jF`WFKZAVpn6|X61^hfk@**A=_IOu#kErSh$s9Woi5*l8K4Zd=jzXJq7Q- zC{!3kc3%X4l(D<4T(={uXH(iw2dt(?1y-wK#mqWbtSqPPRpI}%P}x2yK83#s^T2SBP`U@0Dj zu&5Hk?mSUf6V+e->7M_R`Xj2Rka!d2FdF4xH-?>z?1E{6`m#b53wAnm@i^XR6vqU;`xl@48)-9zV|!#o?~kjj6(5>cQ=#nU8JEG)agB{iDeLcqzcp#oA7 zR4FADQ02$bR3Ua?Zg<`RPi-DhJs09vyu-qqb0EFv^0DlGfr_1~b)K-Cj%y+^F zUsy>&Y;$=(`gQM!{upa^=eiH+&uMJ<32aSze}dV(9M84qS0b$(ThNADi$<`}a2Dxu zd5Iv?FRc8Y%D6`CzP6yAEQj5YClL?Lr-7PJPe=JALj;H2kY_6yR6onG51Ew|aM%rb z4#~LLmtf#<;VWgPogIG9HJ=lGH`?#9C*26(X4)J9e%@1sK zjD_)BU|lGqyvH2!!m2Qcm+7H5NHEItUbfoT_CiV|rA62$5ehi$dQl~Ev=(6>A}cB2 zuq>)6r>ytS(b_-#LT`$5Cs`X>HlDmW`HKq@!0ffd4zYhf+QWL`kGZAk%TAoi> zNrYO=nz6iKWzbo$-^X4_zQeBf3aYR+S`+nNMIavW{tOT0b)t^JK4OsXuuob$IstT>y6O_v^t}tZ+I#ed0nIB2kAVc)tHU$12 zJZ@})Sj?@WHL$MHxU;k(Y-j%hNu1=WT;JJW_=;j(WG(z zvu{90?qzDnM<9grZ)V@u#=b8eve?RfkudgY)V+v%k)7PL@DWVhpM-k@+c+vpMy~`VLa(FKG>jCWKgh!8c#$vqFb``g$r^kxtlQ zUJAla&jsKTl`qPo)eCBN{Akd6f+Nm_o_$yk21fK#`M{m|jq`sb%DNl8o_<*Rmb^GV_9d6wwQO#G{5I> zg&)mS#Y0M- zHa9_!I|X#;m>Cd9=_p(Rf*R=(m<+rN<#@nwH`cJ0O`A5sW*X!7hfjYp`yTiwN$RAGKsZWD>bdq72IHM}T=cB#jR<5H#NdQ=6M+3DO_8o$ZiGJNq#Nu!Qvv zo~&HwI{!u2DWMm?H@35XRr0+dS|T5$2j$O!ygCF!ExYY{WPkCIcu-@-V1=Fk1X7g_ zdsTM!Q=nRW;m3X`lKmTSVooCa8T!#;M+yv{(e$FD{AWGDR(>r1;yC{tR zrfpU2;oL>sJvJVm#8v25NJLdgZFK$cI3C(s#9+0}e~7yrm@^5dI8dyVtLF39$FafCc9x+qA5ir1;9Kk4?h2dZldo4h?Mbi0#|O{Z|s{ z+0=h|{lS*9Yky^)%f|8z;a9-|6N&n~UM7x5aqPnFlrNbqjk-};f%;L_ETYP)!S*Lf z=WnL6`Uh#&6qVEbN<%+Uf75seDd)4&_?!yefm$i2Zx8S?hts@mctc!+SOpf;r%?t_ zTg7{$=2zfddTad3t?&mRgLkne8uQVU(p`f1{n`Y6vX=Vx+VC(mBoS8~Z)Kz^(%6%i zrE}9^ZH?LmQXi%M1L6y1D{0G&R2Oq9#FJ}!w~MIBbXC;XabAZy+{|{emGX=IAlm1w z#j!~$jZ6%$e}h7aT6g`Cm6q0?Z;hmEw`7>FO8tT#upv{*>K~Rd#L_EaaVybkfd!O5jO!Jg8O5CU4tn+i>(b*#+#U z!N!=2J4~TxJW4Lt2y*_PFbab$7f#a6?FyPg>IMl6udxAIQ>B~Ri!^B()ichX<)(8K zLV+l5Zl)2{TW%xN6Nh@e2eQ=Bk#FaJMTX%v`L*nu$Fl4>;b*zLu_M;&6st^DJyYFE zAB;Zed--M^bRzeX0UbV5#QE2sDU!|~il@;$Q$*3v)C5CESHzF3-xbYLUC~P&J*ri9 zUH(E7)7H9*6mf|F2BAy8*yqx> z3U=;js;yNhOJ9sXVOS{JzD5J6pSIB|U|lwFHXe)2>TExgk$6H0aDQskH^C))NP7DS z-^|Nait1*^B99n0ZqFT0&4({?QY_g@DjUPO#bDsJrIqkJn6BS*LcDh~0qvJfYx^H? znrbBbOv!!&O10oSrDL+zr3pfs-gfn7JoeB-;rc<_^>JBz(b4om^DW}U{7C^8YxV+e zepa^q7N%tJu+ZxeUZ*0pkwk4YJss1F=u(;^_OFd)c8SM0F+RE4*bC@kGI?9XYODr& z)Sz&>CW&{l?r@@sA+^{)u1Z&7{uqix;~|`4om53{QFI10P8a20r7Yw(!|$Lil8AcW z!{^6LwRy}b_+3TqoMPM}!!c8CrkSFRtDg4;cDx_p^6VIw{ctgG)|7r#$X%^0>ID=y1v% z_3A3pzj1{RYu8u!Tx%36HR=iq?D2|D*IUDtdS?Ali{z+;RCbd9X*|R8bbbyk-befGq zC~!J$aA}%sB|S+Qz-LYSLW@7PlaLm|`H$R^e zX_l>o)wvdwIWq%o_m3oOK7(x~sNPiQOvG`4k|T~f%tjd)L%QeL-hS{McGalE9i=`| zf!|Uv3kNl3o4x z1^O2CD5RVWlzTPk>(39%R&dl?7_m;mjq#?z8X~^Ic zoMiUZ>F3tY{tmr#y*D|*ho!dogqo%|ql2c$jRQ?%dO&$;yW_s%U2W?&n|~D*zZkjp)OkODgeU1s4BQw;HF;OdabL$Wb@7r{_ zD78uIQ}|pzmiXw-EWB%9g&bf#`&aPP_tt|oI13j;yeEX+^Ggk#ln@6W*?PCa1ckaP14?M!6z%Mw zoZ4Zpq%xd|g5cv#sSYIYVY-Uj$_wAB|eg)C2pcr%5X$qgqNsVKNi$! zpkmLZOFX1LBg3jHmO1pL!g!WugO3B)O6~^8IZ6&IvXIly8W!nOR!=+_c$WI^uGT^% zwrLJKPK7ast%u>Nqd?obpB{YJPI)*IJ|3MdjiGAZny*DZ3NN8FWGlHCRO>(q4ysJf zb^*0GsN!&WU}QxTfQ>Y^?s|v_od(F^DI&BF!mttFy#H(CY##_x$HmVGCO~wH3ozeF zLUiuXnzryOdp^JXzIBXU_-(r<=|RIS?R-{KLtZoK3d<)`Ipq_`W6Wj`^B3%7aU8rv zBKk8NUD`T2!wxS|SE)T;ni@l-L+dSDNsq-;dM}oyry<|SfHjT;-7$}TqRxAXr~Y5{{2*Sm2%3|cFu7{vOeld>>X%5sCO-U`Rbu*#v6#Bo!{I{QO zemuXWaxGfV5bc%r0|&!L|BXHU9xxl7IeF^&Cb9Lg;?!n6z9jbVeb@bNCsEN&&0!>d ziLh6H6;{mxm!Jm|WmuM`*OSv^?|&uDO{Hlv?6@D|a*CAS@}|%yjA5LEx~Iy0(vhDY;4A+NZ;OX`c@B zoqZhkHSq;~fuAB)zoT3nGu2pmw?9Yr`k;WY@Yj#LkT-xl+^OKPAM#T0k-64aXikVH zyTAbuUiAqa0O8L*fde3{^$8pR;WeMYfi0EP|ApUoRzI^s^98!Nk9@kVkNi8!{QEVg z>-LE6`^yLi3RVBUv)t0}J8y+?4NYBws+fSZ=-#^$1{1)b+waI2y7JEazO$M8K0 znyGE3YvV|qjzN%5{W|#z$ww8I{=PCA?!l^#%}*BdWUBan^cSi&-8ayBA*Qu@{wrIF z$CKcy^ayws~9 zk1LgANQz0a1I6=7#Tk-fYQLq5PbigSNQz0a1H~<+;tc&E&^vlF?I)FrGsJ4My6=<3 zJ4gaQUJ)!qhGaWEbEUQyN+lVRF(lc6;`UN;hW?m>HbQG7)K+3>E2`%%`5nEts5PK- zW}n((w-VXX-_c_s)*1XAJzg={?058nvb{@ncKADbERU|<_unSNfZx&nyV`$G`|oT2 z1MPpL{g1W(SMtA>-X$oWw)Fsf#IF&j>4&e;Vr5$o-EnqvhrQ_>_i5F(Qmjf|$R<-Lnxot?!m#>WOQ zCfo1~kA(`lh>~r!9sbOBGa~gXnn(vor~o7k(;>S+B|ym~3sfeG#UY>7lv{%CwVetl zu=4dcf)jJs(>!G$3~OmXI{D?)%1)Q9pMl#L$9^-3ZY2RCDF*#c z4MohYhjvxc$f{+?-<6V!Bgq$tL{jAE65Hs=y#H;;sgB8G44E<#$mj;Gll<6FC+p2{b8-n{5uG{fq&ZS?V9T5&)awohcT4;%G8+R91lM< zj*fyxS005+IL(^F<8ldSd(GjIx`Z=Sanu}btZdtaToteuhJA%ch;{R3Bsk47$=!fYVcl$$M{c#9q$#wc!EM6eh$VEP=wU~w7|Ei%z5>{O~R1LT_?vn zg)$YLtLRoGMlDn zUKtWfG>0*JeU)s&q6hYbupoXmvO)-ZLji=nAs=C^&pr#yR7NUb!*+BK{AXhmw+(wn z`qxPGF|HL*$_MGLh$D*$fH^ircU#>t|cGVg1zy zYEAGwIRVHY8#c#PL-acBiM z2*4uB8$Tg9wMIu|ytvy~8F#Sydg)Fh*~Shk0+Xb2S4UO zC%sfhL$d&^s?w8%e9*ZRtR3-RAcpR#oXjrzvQzx9vbjeSed=u(KDaMa-wh|55|VGv zR4{OHCiiXhOO7}~p(+u^&=s}Xm>>s<(s35eStxVQBCqw0-09krx=v0`$`7UdEk!9S z+bzCAg^aI1pq+-8+-r!^P8rYrokEnVDu=xgshzs-TxBmXsAJ7_r4V(hxjq!44wdgt zXs6CH*F-dGdwjESJ3a0EtAOp)26Ounm)c)$5{0M=_@@Kgsej_F_IB!=Qloi{&F_i= zQ$J(S7XCu^Ik6ts0x;ZSE$GkVGMn`m4nMiOo%en|2tyWAlzg35mII*F22hn`px~;*SW? zZ&!p5YRMft@8~>99Pzyn=k@~akb}g>SUaWl^S*l>vd9d)R%L-LI-i!zH}$09wtAvGT2FDmKsY9r zHcTax@>TcYggkxX6sgH$ImE3wtm+YX@YK-`Pjy@lN;*j>l&H|)lTl1z%-J=r~i-BZ|obm%oh zUGWy&nCQD>)s8VS60R!-a9ZPcq_n29do;TjuzL}^SFpQ`-IeTK+>hjM?x{c28vY(&4{= z%zYgG9lNiwTgR4vJDf_d=Lkw`JSe?9O=a_hQ=UaAm z#aiZmw=>o3^j%110lOFMLb0x4cf~GL{-Isp+l8JJ^|Vl*fQ}R2BBap^Fv7FF6HpY0 zDAo98`(Pj``auwvnt_MQoWv|f?JOxp-XbmM09Ao^hSd(4%b4c^(SF-4NV7pi#3Dwk z7{$ad5vy9f1<5YBdE#Q`p{qf9ad9OhY?%YqiK{uiURD~)tlK@#=xvQw zG5V4vJ@FJH+?OO~;nw087IYTjooIa#AGS@LL>94h|7yamh~ zDmF4Yhtck$H-_$NaSfv}g3e7=i+dUECx$Xwt0fui`rYqX^NwKxaEJwTi+sZE>%M7&e58B#4S##?w4XA>@F z-ZJnu0A0#j?g07*XO%8v-XEDaQC!Kqmw|*eNn9nVHnAy-+MFz|X35W4@-QIE`;S1C z*5TqBMv0I@%NaESeS;O;m5g=++JJR~n_0_LMn{U<7#+uGmbi;iJ5WDsmbjneT?6D< zM~TN6J;G?Vc!JS7Mn{XM7<~;C6~~BYS&Qounj>E1lIV(od!#i-yvoP}8f6_P)-u|S zdB=&@7#+lDu6Uibv_Q)SalCj#q8W(ufI>Lq`;M}VQz9%Ymh zU$T}LS+YfZ&G9}4nq@5zKQQ_cXanw99*Lr^7S&-Yvs1+0jQRlevs%S?Mk9eXh*ohh zqy03R#ONqS1u@O0R?w=^bmlDrI@9`vn91lG=KVsVsR1kHUPO|vAC2Gm7pt@h|3wpFmH0jFU6IZ3{{I>k%KY+xlkvFM@(WO99 z@UFLO(P!O^)O!Qn#^?b?R{>G!J`Krn)~_{M&**A#C-c4ss!-&xP-QXTIt zMt1^55$|0_4{G!Uqo*|byG>93+9>sI*NT5I?{m%jC)b06$!8RoI#y!)vsxq=-6%Rc z)Iu6#l)}xTmeDAn26;P9z7y|2pngET@JdoGW&n9W^~{^6C3`ck05ll90n9s3^E~EV z12hc0fsF0~>Sx^{(u`gJ^5i{Ydq!_Fx>pQk^chLYd&MwD-vSK=8o|h^Af5M$k&NPu z?i0H*Y5?jd?-RQ*Y6KG2ePVaEYy{8-ai18&ynPrwBo1UW9q1d}KQ)0-j(NWmhcdbV zXq@$^n8xU8pfjz<#B@ft0UZN0gVFOqQSlh=tEMu03uuG*Bl>1S8-QlX$HhsE>`H|e zGTH`cgLqsN7>xk(ru77Rc+xo^Xci>TXLP#eEoOANj&~vY z?P_rYP*kiES2({xOL+uH0O9m0crR%l&UpfT%IHaP4Qq*3k!4Sb<&1g*Ma9$N28a5= zG*FdzLHw3^!+{#Cmo(ZN$OC$Sd4~gS5HE>`8J%23BiGB~4~$OJ=yAtts1_Fi4F~TN zMk_S>jM2RsZD91QMqja(bwH%^YepYxR1u<5`X{4TL=~g&HL4ELld}m(h*v}}MqN88 zRL_zFfui6wFxr99UqqVGFrbM27jX!qoiuMEqfr`7Vze*N&f;}3B}8R55vWSMA!agf zCQGi@Xud{gGOxhs6R|u*WmFuIM=cZ3k{0oJlf zqu&92Y;6(`GVev^b+*=q;^M>jZno?8>$00Yu|3mec4%Vz_UsOaJ48(DatdVHx)ega z#W!7Uh8s=X9va`?EpazokKLWvJ(%5765F_zxGS-n-CI0{U(B*Zr{qYN!n?xtlDoq_ zF}Xk7w&Zx%5oaauhDE=D>)Y^j@xaD97rh2+Hc z-PzrbV@>Mr+iZz!57Kr@kMVHN?J*MW(jFb#NqMxyoju5XkR=~yS6RCn^xoozp5)%$ zlQa-Tm5iT?iuEOAeD21c`-FqB>cr#QP^mrx*Ai>CA#HDLLv`^UD80qUO#f_~AH&$u zte=4UY&>=w;aXz5`fS9{_42xGWMca$P$stT3Adlvw|)*ZkZXxa^(~O6a9qq_`U&-< zpYqsSoL+xPq_v>MEUx;wJ;dZ!#8t%d3 z)=mwSi{%ZEBD}oeRk+G>a+Q8dJkvmyzt%t{|6W6{SZ}QMP=5D@Yl)-TJsxg9*l;)Q z30lybS|izJiL-jIz{1%tL9y7XA>voP??#)yh24kQeU9CA?Ea12AK9(!L$yG;AopY} zyPaNtCc6hSWj5Tkeeq<857_;@?|9c0Kd>9=Hxl8l?4Hr@j}@*suOCS+?zakItQ~-R zRllbZUe@n9=v3C0yW`uZ^d}oAN0t~mfZVYIeuHJdX#-ZmoipI($|2&^0aO|jyzy1N zMT}3_sV*$BWFYDP6}vYMB>j}5-eL_XNlUb)C|wmkH$|=JlGOX)Udit2)P#ttk=~+T zx*3aagVH;8>Mbr#Ph)qsri^dDB2DSu!S0iAdyBWymvrte-cO@!bq}_@?vlUpO=r}TNJ=XZSjph4u0fNP1}2a(KvgZ_-8?h^*BgR3ay z`l*ku?pr&t{i8wTe#P$i9u)qb!}eebSFjt0TZ}c5<;m?anA|>ahlqiLce96zod@3? z8Y;%Jdk82)#0-Roi23Zcv3mi#m$JKp-3QoxoZaWy{R_Jv!L`I!(1T$W>!4?MeWUX* zfq{?Flh(VPcj47h;yr0O)%amT!>g_yi}$KE4MaE-@pi%c!)uH#7u~DJ0llwL@9K$I zr`e#X` zII#L$Q7`r}=t9v)9A?nv0{xglzrtI{X$IYlGvk*U^bpo!{$$Ye_^pvQ3|fnonU4*6 z55Kd}zptPAmsr_u(&%7VJzNYos0C|pdl*!}eWBwtda=`YSczL>P}mwH))`b|?IS)h zsHe5B_|72DI#9&=snlQW)ND-7Bg72`d9=!4P_uQkc*3BatYgKy292@iicJO`Xw4Hn`YWrCs-ACU zMarO4ten{1pmwW8jMgZJx?Lb98gwDn&*m6(xmYOLG&%{At>R*XE);FzdV?+(?cyPg z+8}wFSZ&aS_@d@rgD%IO#@8C13CVMCphj7JX7z>Qe9_CG%f%wmtkI(Cv#rHqj6qAR z3&j+JF10Qe^EA2?l9!0n4O)VC^2-gn)VfmKtkE(^UL_thXbIlJpEl@HylJo1=sHMV zBR(`}iM3q()1XVO6~ft8<>BV)tE`oxmqE*|o5V1KZnAC_6AZe;x?RjQ=mG0)akfE^ z;yv*<2CcGwD;_dvwe_%g#h_QM-;2);T4()1L_FV?_wjDl$DmKGr^HBuzOnnFeoY4it7xjm+QnG1`Uww#p4ETFW(b?HfWUmNc`2HedQp+9vw`#0;27PLEu@)QjrIoa9 zHRuPchxMF6A=%6N#Gt9N!Qv$nPH&d%XL^8I#>?1RvR=?47c9X=%wm?lT9^lP%Um2F(;FTF+?I z6_O`eZyNNNTxfl1&`fcv6>3uH4UE4j3sx6{K9Z+d{SEp;o@wo1(AV;8>i~l`$@8qE z4RY-Ztagn?K<6UsGJ`&n7g{$P^o6{{deoq=Io?Ypff zG@1*Y_gH^1=p*@C>vMy?kPlflef)#^I~9_TSX~YJNdCcUH0TTYxHVd%x$&>%D(eV? zHp!>0HiKOIS?kvtT^PU0dd|Avpyk$!)*6FuvR<-2F=&uiJ8Ssz-zG3b5k6YC*^KD9oxUNPuP>kI31gMP5S zvLemCEg|`})yJR{ojWJs**q zCGAdfy+I9jTz;<63Y2H9jBKYYTM=JwC1oFjZnC<|kp``@ddi6gt+pEEe1l%K`pWYS zy2I)(R~YnwHBkQEphxj@7_S+$&T5i>H|Tw#h?@9D7nO-g>nyhqd}+1z2qMankx5^Zx}R7?k~SK=r}n}R@3oTwB!}>N_&EA zFeqtHl!Fawz)wMp(X=Ttexpyk$d*<#R5)(pACpjFl^d80wAtz+aL4SLl&PQGE# z9oF&kYl9xJPLS0&i%6E;6o1rektu`LStrUp40_*MC=WO2Q>!3PHt0+17xH3*ez4Av zw;B|ZXUiuIIzgT*-!^EWTqM6U=rs9DS;uE{$d;+{BH3inEP0vS+o0p*m2!qbmG)AZ zGbm{p?lgphvAo*nSjZUue>`&!C3~IK&kPgm&P+K~=YJ~lFS;y#7u_j(6{~_lqUgY!m z9`?8Ld`1_E@8ZXZZ{?K=b$w<>LQ5H)9ZA;g2gz$Ss%LbgMgth#p-~f~`!(8;(eD^t zE=JW%fR5${Wb=Gi|; zdnd~K*^#qq768RGT2j*r6xZmAn$v)~YIJSQIY9k2y1iyGP_sr4*IWWLT%*Tpt^yjR z(F--#0PUsGYc(r@4$$a}np=PlQApUecL5!yQAO^Wf~n;yUup(s||Y34%xSBG^_R#p!*H_ zyY1RfX_N)ewO=&o?{?UJTcftxZ-G8G$Z{g~w;C<3jR09Ax#Y#-+G;0i*J!k~HVM>S zqZ?}LotWK6p~#)J+d38YK+Sukwh?HEMkiM_I+gZtgSL07{ttU^0vJ`5?2Vtkdq_e$ zNe8kMAnXuiQTE6V8QBv=9JVIuKqN`WbOOW$K>~;h3ThM=6a`V-U=-X?K@mhj(ZNAf z6b3{cTo6}O^j}q{?(N$Nyyu(u&9}V&ps6~)I(7D~&eGlL07kDQ_R$)vd5rc0ic`lj zIu6LI7Bc!iaiA8j&SE5d1GNM-#3&9>qPmDtmM>59smmC(1C*rR#^?e-P1N;_hWN&4 zP1PqDjRcgeKFw$npcHjCqY~c)EmeJ+QKfH+mZlzLbcHXVrK?96UGFQ^GSq)aL}z5p z)Kl!2lC)22rk-)ods=hV!moaT{eMc*5iMKwIp_-)SAxz7F~sz7K4SgMQa? z)M*ZCte>Y=I4D!^re5Ws^Yk9-5(o9sd#NiOG)(WSu6EFPy}!DiQC89veW3b;L{y?d z>eGbesox;=6-IdKH$;7l5uT>+bI{ddgqlUK$m#^1rj1d%JLqPSuMT%m zofxl9a?oAkVztyk8^k5*RStSi{8@dU#4D6XaV`nQm1gZ%}F=tv(#A*TB(<+_c7XINaoX`0lU(qfY=;t2K=N(Ii*QQI|3Lh0tS! z7K^=*&pGOI5>ZXeQTMW6zox^CIqIj3hBVC;bJbrN6%fiAh&fvzrVuJ1By%=by~aW3 z8*|m$BocTIeTDjv<5yr@p>8E4PoA$-69!?Ni>;MSCmL6(sS;7nu2fq@p!NL1&D|)YlxOnH$yYKiQgFj3?Eu4k|F7 zQU^$66{k)#Hmi9qzs>3d7uuo*9F!}bR?8v~enQfo2cK52jzH*xwYxYq+I-rn>lJ{W zu~F<@sR`z@>LLoa(}SANs!JH5=5y*&iK0;RdG$s@vW=csZzZ(Y!g=C(^=?K_q!s{L zClU1t_<*9!OYBRj>1G)1O>OQ%@1?eKA)G_PnmB8O(N|DsVT7rN(Jv9Pm}%}feQBt< z(aG6ZsGjGby~Z|mGNI#9ScX^B03$5JD{7h4v<{@LGhR_= zGx~d4b909}kJ0zww?kdd;jpx?s&}woV;oSO~+L95@pS#r#jBx(kt#&7LJPK>~ zb+s@1VcWj04q-oRhd0!b?AHVG`G$HiqrvH|%suK9Mx)bz*7m3~I2^XoUNy*mmxAA3 zbuRm1i@mANXTM_bdsAJ?2la8G&_ATJ|qm3P%-M%XIvs?8;$Uj8?=ql5Mv ze^akwO{~EKYAqwI!2>FO5)oHsjPpJ9Hbxldd+L3RuumLR-(rNl?x1>r5!UWO^JxzmIcSUVp*q$< zx#Ex-j6lmG&|MDln}^hw98_R@q`v8(f#%2RF^Q-hj;LQS!ge^Ken&`J)JIhLqaAeu zE$X9c%xElMo#>S@)BHqDb5Mo(soL5>HReCmK8y-74k%x#c@EmAe68j?XqWPhTE=Jw zXnv>S*Sum1Gcxum->Zupv`hI>y_L}hZ>{;WdcT8iG=Ek9;-EV7cXhji?uDPD-s_+Z zrlB2j&}Ord_8p^|j9N2JQ^&~EYclH0c&)L6HkdvwlhIB{Jz4AGpc~CpZGeO7%nWV3 zgYGr6G{1v3nAzHF2W>XnYAYEnfz&%`YaCQ(cGezs&<3-sww=-3*q6-x&u-luC;Seo%tuNyMs2EBegt6 z4}#`c?GgvonfY3wgEp8KYavD_yt|Z3wQC);PnoRU=%542RP9bizk}v9?QsX~Qwp_b z9CSblXge8g%Gjk8YwtQ}pHiZI?4Se6EbU7NePEVq$~altO&Q0{3N6+_Uz;HRoz#*b#TmQ8+g^{v)&9kkA<)}}gWmoZygLTI7*K0~qQYBx(iOJq(oYP4SY z7-y~J%`5;kkkC#~R%Vn1-vdPdcIrcXUh7J21p5u~C0SQ#8y(c#y4um~4B_T!udv@h zK-XydB@*Kyz4;n^unGR{@Ju0e6`>Vkc4j+kzP61}owYDC$6BBrW3&R$Ld_bF;p(i_ znZ2z=T1P@)Yh;d47i)e-PZ26*^a7zZ5{Vs|gRI5cOAh*zwM6@f&=Jq;nLnCKweJbZ zJ>^o(b1|m3lXAUOvk1v{SgOG!1OKq*Cs<20{JtV-B}}od*ZOietg{=mZH%y9ZqyDs z;R4n&?Heatz`9BM#T9OacEJRUbEm*?E44|Cus(0m9w3CNmm9ZgPrCeW)7~b8`7Af; zwD;K$^K!d(ni0l%hn8@Oo$GRAm6k?mr$Eg+wcduzU-wwOT3rq2`0y$1ctF z+Lwf6i#??M=7h@?4{64qF;0wSo$-+7C3LGe;ay@qtW^<`rQN`NcZYsOvt`yJ+QUw` zT=A&3)j{iwN40%~7F#zoyTf`+`xZ&_1e7X~ z*qAlN`b6u_Xfya7*Tzc(vE+*5+Dr#2)^TkPAvq_1sx9Sk6S6*u`c%8eL0?6ErfqT1 zk5Qj%uS!I5{zKdAAjSHJ_BV;>uIGeylo8(boX}1(!n>Xm+8IW8*K~r za`h{132Wkt_my@l`wj7#jlRen;Edmv4}hY{Wb>H0=Sc=KcEuQ0-!A5;GuBfRUe^v@aLT~Cz$Dz==2to_2?_h+->Ax~En@_RgbiIUPfw8&H@akC- z!3x_3e*LXIA-PV+>lZRYt0X}mDK%lEu@xu2SU<9%GQT7!WBJRAH$j$u9ZHSkX!>=>j6Tt zK3nT6SraX!*7|dlw8sv_&G(qs1n*yMBoM za>4I>{ToKZ2aD94m`~Xw`{>z>aOc)n@5>0=wx9kQ zp#|dp7N0lD)o;8U!z~b-TYTGSpx(DqqIX;T+GvQrhtXFp8b#;n^Fz`vx@D8-k$V3s ziLzR@h#sq_S0h>>y0`2SeX+ig&;oH0XkMbXolSmpJ2#12dZ)g@d&HWgFCxF4o~K(L zv8L#c5~>3WFgJRd{*;4;M*H=x4jLUjUEkrL$OZ^uLVD(0Ob^2aqpI~zgk}w9dFePbMTs|BZSVMp(XOdcdW*T(5R%-lQ*gY2K{A z>S&f5EA)ddzm@v8u5h>LF;`<=Wa_u->4aqJx9R6I!qn^Z5|`%fdW}o-4t=FdbCtfE zknEp#+T$U1E&MW07;VYkV%(|!O~xr+%YHNZE?ZN7E&JW*dmMCsiz(K9F0{*7<3fj` zA8^p-7RRF>bkM=<0^<<}eFg}=uao}m)PKxgXTY~!GHTSSz?QzvR#{T97hkC`vgjjhy}E&5DGYgT4N&)~ZF!Ha+HA^ut!kg*C%RNX~pa^gKp59$wWic4_X^r#NVe zwNtNhh1;e735|VT!d|PbDN%cwO(x2vc}NzlafzoIUzPCmifB^%)W9D%QmQ zvR8kO5ytYSzKc+uIMb?q%v<_FM$xU?$L!O;W7GoB+xoOxSuY#Bonzk7OBW$p0rOd} zn0NK77Tai0%zJw65*v+-`9L3WosBMm-&)a@+Q=VsL|^Nm%VLh{ldiY@LNTA}zY?m0 z9rRT(|Ioj^0sZ9I{6hbQ5bocvjrl^?ZbZN19^7kxp?^t8w$WGmPmbU6n6LD^m!YQg zJL&YE4c@w#llofn!#JOa`Br~KYQl=%%KTP;lF@aof7ZU$w=%lDbu05beFvi_!0$VK zFQZ+pH^+Rhzsu-Q>z4o>B6Qq?>3y$@<(QWR;_KFRF+b_uS0Gv;er>%w<`=z+QD&RB zW6tP%81-p0M*OCyuaw~?w>cOijH?*UX>%k-F?KLo*yigP-I#fc)Lhr*OpIl0WVE$S zbZoTo8Kd28;$vfttXrk#{x(fxB{j`i!l0h-3{mF*XvC zCtppBebP@{(soj86XQ2R3&f1JMX||7%73_y`wlr2rWMR&-jb|8P&a$2Ku54Esn{6B*Kbf=E#$iG-&en#yipn5R zv$YXJNNTne9&Y0);<%;&k-4a<(wriucHy)G-b~f{3+Z#I_v^chd zaoj<-#KJF)+=;0#7B9D36Wht~5|Zb9IfnNxnKPViIvbM+$(_b|#(RV?XIqT(j89n; z>#U3My$f|U&N!O6qMKpeP3h4r+|B4fXs5t%-Hh%ozwX8a_QQJVZcLMY^z!HeW2U27 zU|e9VWKFD>9>zP4U#{qBeD3n=X=L6LPQ91Wosdkum(j!V3s}940qlqKZeOFA5!OUM z;|4<5Mg>N$u|bA|*=BR>g~n5idbLNijl*Fq7jmC~)uw%PY=7fR@{{#B&`4j6IlEPi zZU0;JK%?!w5>09UeC!~jmXI8&LydlCJJfiFkX&Vk88P=^IB9DPHzpH8%@1Sq zj0*O{yj*0QWP~LeVO+QdfRK2kqk~7%>mXe4^$h zMo&T*XRerN^mmYAO*HZ(qT8KIjf)xKea@vuAt8BZbE#252ycu|#$IaFIOx~dNyfDf zvKmh@ZXmQm+|}OKc$%@A{Z>G@>Bf2oS&fT~jSl)Xw%B-mSc@nyzI zLRf|g)+|F?i{-1c4z_RCxYURtB+n|#j1)r0J$T+)W;7>+;no>tMi(UGv_qa5xjE7vB)y5H*<{aZ!Mws4Qqi9{YRcegO8DTHD z!dOm7_JS*o+X%@PyV7`wHF5M`X>4@)U1dDupefc>#vazh^sY9>JQz-Io>4*wmFT*)k*NAxvG?*>YnrA!$7= zH%1V;MHF@z(s;S?A)ytbtiwf(Z!$0xu7-b)Yi{0bqu50q#x=g#X!S7qVTq;z>Q3l5 z+#EDFR~Q2&ibBm5#-AL`AfSmZ&6UP1m*z?%L`aU}mB#fBO0sS-?qG!FyVcmp2+Mby zagdPg1$D*|LUnLga7SF7@in6p9T1&yG}jq*hPeUDfHko??sg-C&|>Sm4iCnyGFnML zai&AASY=FSzr>Es%~i%_jE1#%6g1~C$|batQ9hxk7)>JdH%7&TeqvNfDD@GlPir2b zzKm`nG=)({$5xPfiA0cV%-L0h<5cZb>Lo;u7Pz$ea-bo01NIS1-u66thj41Ol2et4vGM{#7#+ch3zXGGN`MQHz zc;n3dF3ouJBge16NHjlnPz$fm{Klo(#QcSjeAkt1nww;4u_vdRiG*ZNPB+uoZ-cj+ zH{I;up#I)0^8yE5KnX@x2xIA zLEDw{%^XHMA@v^SAP4pL_Ay5}=pt{fIn6=iz5UH+95mfK*nGu7W!_=teg~b7%QHJZ zDO2AGsgE>!IB2^v#vD#aj{b4xP(sqi9A}PU%`+XBd&ZfijAA=&R|?Eku5cHdYowpm zEMboKV)HRZtqDELD2LFijCv4yTO#^o+r{QbjD{y%?VVtrV9l`!wcbn29~n&|q&`I@ zvWf}CF{&h#CK23rUJv2gI%uVLqS=el*2LX$6U_mHWZ5q@F-BZBH+a{1!zjDcChuf3 z&(VC^JH?zWk=4CZbFqNx0_J_} z7wl93=wbG|3jB)AP3*S_{EE%z*l&5KR^|-zW%j$X)6d!r^9@3EaO*tBJJUSC2y1?( zd6dzjgtr0xgVFMY1Ax9^bbG=fKtC~BlW-J}z8Pzx&U!rIb3h4=zNLb#x@pEKSt4szW5Sz2&06=wD`-+k&H4ETg1;Y z$1~~%sMMUys83?M_%buVXmH|r@#SV2ql*Cr&1y!I6MMv0m{&XK!uZS0<&26FhXSf| z(5U!Ib3LOV_*I%uIA~OS$lS(gUgCH_uQ_OPe3f~S(XzxMKt~)@8eeUmVsvL>2++@r z)+b&WKigEc$hzK`xG;W>86}Z;C2?Qe95bGg@GXs>Yo;)2=es$+#%#`Lr0@3lE6jF` zN_?y1uQacD{IVa7<~_#512PONb#;W z?{v_1WrO)Jqd4E`xJS(w9i(_Sn!6peU3t=ck5LwAZZ=P%< zpB%K`IALZ#howcob;cLw2nX#lzBK1LXs_|LxsH(hOvNelF-G{Aic{uhM)*mIQ|1ed z@beF+%vTxVCmv3jdl}*95l)%!GQxNFr_4i)@G}Re%ug8MrwmS+UoyfM^QX-32`#qp z-Tf)E+w)Wg`h?RdbCg8lM9#Q`Q|44gZ#ABn@U2`(a7e1K7t&NCB!GM{u%MZ(YKYYv*5@T+-RIK+I;VPLMDS_z2;WIHW?@0>b0$Z);7Oh{~R4QDjE%jCokmY>n& zE>o;Uh*L2xpbhQQ(lD)i}^*NzB zYk8MiZ#U~_Mrd(%vy4|UmOAV1E~Saxtfq{fBh;4BK0>`1ebuEBH2X^gugZGFce6%1 z=)(B!))Yo)qja}sIcQY;`PNm0WbZlO!e0X!-W7jkXEacc!0*XXNa7JwNm5LbnGM{R zk-U=R=!Wk^{ih_mGcd&)D2A|GrP$ybXdPcE(S%H~j?%&u)dmueKwpozk96?+eB5q3 z=CE&M%;6LprruCu=jUNc>&^C<);|{m)_@`~p2+;vmwTwLq$YkJ^4UYxm%BARl!`(% zY}cO5zidZz|1q8Vso1qqU;eL2{g3p4|D8IIQwzHLWLV-6=$16H=Kpm%mp8+{fxR)Z zN7a|(cOcuEZukG(P)|c!Xw?68o;|`fpo*|>WNo0lq2zx>JlJRKvE$B(9FJj1Wa|G8 z6|R~8xqbDIxAF_niz4Tiu*4(KE$M%z^J;^5!V-@_w@2)4pc9rzU#S_H*1s;EaLo3K z7M9p~{^xp&T+Oi+?3lw6xz_))qcR-N|LU0kZ!77)EXHQ;vtyKnrvHrzGv&sq-d^)$R&vG+0uTB3!v zuN~5hU}q;&`L9qJ>Rc34|F6XMNA%w#tI|yyhPnk#R}}bN8%$l=PXCimjr!+cxz2Uk z_CK$@hpEMn5|w9bu8F*sY3Mius?D$P_Q3beB>*lCB_kLn`Yn2&a@DaS!Q)%jhnd14gNcp+WA~4Q#or5)up`pYs`~Qo1mhFi1v)xkY zj%?+y#4hPS7wSpqfr@yJ`eE2@r&V8KrxliaMA-eGg_1dRpL>KQ_6bi|;_jL9%;&$Z zgS|-R%FelrKP`x4?J3=n%DyLkrCaK_A5U+ zDgWc~oJ;eM+vjo&%6Qy;qhW2kC9(%%KUZkPd8p4zx5}eW#wJJfxyH5Z)pC5fQ+K-? z`nq!~HQf@aFD1u1V2itRelB;z6fqu!ZroJb#b_dt`cHkiN7R>`OY_|Fl(WXH!EezD z_(e$RE9cm(b7;!ExktU*eXdfwUaWSfTPYE|H` z<9OhAdodnd5p2o1>_gcfWIXOZ~Mq-75S7 zFP6nE=?*by^xL1h=tm_TO4L2uj3J3E%S3X^9x@r+D(yQwqLAb>h?cl?WG_NF^l+f6 zSU|q+Jlp^hO<+zU^L97M-^)U|d(<>+&2z1T?ocv^ZtBiM!(MZcTST z{39i*f)z@EUnRy`mHp5yai{f1Vhiir`3Z-LEJav;HqEfFyAOE81JoWB%jxzq6l} z>srIK8m@!#=0&cX(Nqd~ex5+?bDgm_Jcs{x@0GU|Sm*B5=l``;278V>|MvV`U+xiM ziQ65y7KC-|6W6fB!#lf%r&8e)D*I+czQ%XoWXT>YPx;=Y8`*JV9I?oy?Ni8qEG(VFDa z-ImLSRwE;Rb!RRp6~iri1s~?`r3)^Jx>7b-}59%e)Vlq{vM|%T`npU`ZO*Qfu4y; zE5wyOQ<9!lmh?n9#xqt)^{#4!@-9icmAiZ9Cbbjz3wOJf2g!}UZ`Y1W`ifC4EC>_jrc)+GRv}M)blmwu_(Bq`7)uudAE1Q}^~-*yLGC zE8Y|6d0UgQ%AsEGG##rP?e(s2tnv-STnZ`P53ya+qjxgW{zQin9i2Qt{V?tp<6)uq zu1d~RyFudoRjQFVCNQZ!v12q?4j<1R9JQOW#L-E1X;wL}BU$Mm9*6 z!Xp6AQc64vdS4Cn`rfrESfUj~|B^D+Gd5vc z%6{q_A5tn4J*#@hMoskG-}~#7iJm1rqf(DSY|Em*06Hn^JD|a+cJSSCN30l1#g^U^jdY5kMt!|^ zWh&Cz)CEvW_ouD^y2Z!?--lCIfjbwzsjpuj><=UQ!1uGL6S6jfd_vaKL|;sWw(j!| z&^aByg?Og-`5kC6(4{cSV$#~Fm-mSWdPScmKo|B&1G=nFbD(v7S_56(rvuRSea=f; z0b}9(G|Wlww52dMV}Pc5hmz!?v{ld_CIH2}trAc4nGEh1`vl0h9Nc?JlGzjGhx=5g zEr77K;5)s~QlP~^FUPT#Rs-}wl0QQ7N770_@;s#eMW5Fo>=%9ZLf9|*{1x=S=<^=v zf6?a<=zP)V>y%C4dpNl}(BISI;dhV5K+XIBb+STOeXER3o)`P*=_%@YedB@d?b9@U zllo$x=HPy@Pp9-1kpDSNR*2z!M}hvuL@(bEUrx0=-N1h_l*`z9TJO|0K(aQEux$w-H>(+cR&e%*k|xfH)~@F0Y}#lRMa`B^RN z_fYH+wHD}DWp%%a8Q6=aX7o~Jk9x3Q03^v-*JNaSs@lI6+Y!DQsT)YXPh8cgyXThn z$6~vC?g09^n%Dl(3>IKB z7aCI3lw6USqP8H~k!Vk%gNcsMH8Xp8a6VZ8VatsL6!QX#xdbEyM!bgcUk-hyz(Cr< zi?p40m8ULuLS}QVF1I+d9qH7FmvUpH)=(>~@$AUOIdE_8wV5^4-)h8rxz~aFrQB5{ z$rWoT=N{6Gr@5$$7MHp%6USEpjWQfH@fWr-C&C!V5smr8u|G0#1&qpDn_;Q%ZibR^ ziAzbc3f8P!n{Dz)-w)%~G_ypExJMJJSCN^x>J9__IjQLS85i5D$spi1!gM zH$(ZABC0uZut3d>Zrl%xi&T zd_^(LV>uq+6i;K0hj}(|)bG!D8uR(gkFo#SIF8RNd3L) zz}qv_9}FDhSqrC!$VDdSpLu`g+nDbFj(Ud~3)p32JjZ}j_~sI8z!7IL?$3N1^TW(V z3#p$C9Q6mcl)NZg^4eCCuWc>)jy94XhP$K_Vz%!Xa7q_$BTk4re8+$zUJJWVj&1IOeA| zPx7^Yl6=QSk{=r(xi(7j?9q}B9wT|tSjlV0Nxn8;@*M?|9~&>ZHbL_2OC%pWQSzco zC9nOnR$=6;jdC@${v#(*kK=K{Tk6kPAv0BM%7fHT$G3za1|LY{zu9rOf2FYug55AH8 zmq~t%`LsJ^`)pe+dDdFUH;mW*%%?G*&-^~-+n66_F4oC#SQa$9eA9elE}7B+ot|`QZ1MA7uac zCEvlk_5+EFK9s!nkmPGWV!e+gKXz1d?Gwqfk4rxIQ^|`ylf3qG=BFfI`>o_VzLWge z_mXQrN}m0bq$&*cyW<6y>T8I3bXWlqj4%e*S{#>|zO_hxR$oZW0e zGZjvxG&n;&NqeKC?#*2&LzX|Z)C1Rqu6fDL+gWWqtR0_Wci9%5&t`OJ2 zsnvWqv05OmgKzJ?QCu%>26~%V2DQ8#POxqk8^lWSC|G}w!M9334n7;9MP3vSi0$GL z@iL&D;svoAB(KANZ-}?V9`O#){bHYZSG+Bt!-}|s;b4!g^j)h#YZ6^W^d6%36J77S z4tyUc`V`TvL|1#4gS^svE6{n~JAuC8yASAo--AF8`5pxd=UYHO^*sahE8mMiJxM!& z#wWcF^sc6p4I#D?HBxH9ot%P_9HO~I|CF*6Bn9LychPO+e$6HMA!Q?I&P~M_)~7Z# zZ7Sn$mDUa$E3kPmt|poj`)y1oAnk*Z1>0D{^xpyO!2?pH(E8vJRECQ(MSl} zy&Bxdn)QqpVrEOEL84a?T|jgx(d9&MC3-i}wL~`&9nnhGz;!WL4?V!XKGqCtAigcq zR&D!%q(|FfNZVms47=AJqn`( ztn+pqk>+%K257gAnBsz#FM|6jqDzS`CweQQ{BXRbb<wFVdblSPv^*v90#L47-I&?`uHkdEW&3hHpR6 z{l52s9`YRqdc=1e=%>CffPUpW1=N%D6VUji-+(@pgY%4g9Q{|vpzQy0jNjS$H0)Zs zC;bkzbDEwg#KWC2=T8%rvx+Q{)PKKoQ_wlwIRmJyAK3@qh{KwZwefS8x!~*TinKM+ z{$1xKDx$eZh1oybqXTW_F@d)BL;-E%i3Zx%6AQG1Ck|*wPdw00oC?SPK(+TK0PiLSH zd%D0{v;n9h9`SSo_oF}+@tEg)a6b-I5l?t}fO{iQMQrl)0{35lD&k2`A82;b0N?dJOe=fB2Y!V9edL{t<$ukk?Y0sa5{_L3y^cT-mpuc+jK+kvzfhtM> zsH)6>*fgMu(3KK!8$cCdDzkuEN*T~7B?$6HKot?KTn_FSpo)l9Lf~!;R1tAXHMqS% z6%nt@0e1pW1@`VW;PwGkM3QnPxSIe~L{sHza3=$WH(Saz;7$dqh%^Ph(@dlTRYZoe z5ZswS712yt1nw-L&@13B33`RH6liPZ29UP_s)+W=GH`bw+DW+yBpr$7C@a9-S-A!1 zdCF~|(*-E>5ao7ocLNGNL|Fyy^MNX&zj7DQ0m?lc?{^6$`e4pQZ@lSr927rTV*rQ-;}3;{tjO;slY>l=Ye|E z7l112OF(sXJ5WP?1*oaM3e-|}0gYC718uCn0W?nC3)HK=1vFlL8)$<1SD=aNyFh*F z0ia3hL7+|44}dmR4*~6{ehjp)dIZYS52zw8RF48JP(J}WP5l(;4E1xMGu0D7OVlrc z&QiYyTB?2nv`qaLXu0}5(4hJw&zG@!$@44}icWi~4U)(PlCT4$h-XkCCl zrga1QxOP6!C$t_wH)_3rZqoVy{fpKQ=#$!oK%deE0Ntz&0=h*T0@SMy0~)XA0Zq^^ z0-C6g1lmL&4Ya8~7HG1b4>Uy|545>H0ZP{bD3nE?2<~j6t@S^Hq!rON`ecx|1*(X4 z`c!bY2MRMDocu%C^+KSX^Z?KteFo6ZdI`|;^jSc==w(2=>Or90^vi*E*F!+h*QQrHKyTC+0bQmq0lHjY3iKxZ2B0_V%Yd%X zZvwhfUjg(M{T84P=(hn~tKSZEoxTd_gZf=S*X#EHeOSL2=mvca&`0zKfIgp>bC}mKpU2#<$b2kizKr<_=C?6l#r##~?=nBY{2=oWm>**PG4mgp zpJx6G^E1qUXYNsDepFp@o%tN*HO#MO{s8lJ%wJ-@oq3WW<4I#ai1{$)7cn2rJfHa- z=1Z6_WxkC0?aWs(zl-?^=3g@ZhIyhX^O3~7Df7veluu>eCQ9OA%zHGFcmeZ8%$G7> z#(V|y^~_(0mf^Mo?0^i-Er;Ftc=klZWB(Hx>TiU*D0zqUzE>t|+fAFR98YuJo4$<^(He zYH*-5FvDLJ5TnMU!cbd53%=`Sg-8tN~s3Rc$CSIh}( zgg8)1uzYx+v?5T6xVkJL1{79-tiWG6BT$7(HRXkQ<+Fo@eiV-j%m6B-7Y9p<&hAs- z56wEePd>ypvocs-as@>P*{KT5t&;JLhD?xjY;~X-@_{KkGBF6sJp+m~psK2}WO_AJ z!eD=uzaj{QJ&P#hk_AGAl_eFJ`>=3iAQbY?2#oYs70whx=2ip>s{%zs<`xF(>48^i zNnwdAiM$!*!OB25ro8gP((0lBghdvXk16$66$dNJ!jeJNrB&7Lpkpe7P~<9Ckp>0J zrk9laq3KHerQwic{3VrhNl^yRN|`K{6JNM zvVv@U-dUv;;hdpT#n6(uk=2x6T~g)BL_xq`IXF1Sm0li>4cTpJm`Gms{8zuR{>dL};@&FxW>yCLMPX%X<@#k96f7-;u8u=N&KP;)0-<2(>_B*4a7`j&e0eBPHG2AG5JZfr z3>25lb?FT#EzPS6l!aWPfzWp=Yg~c>1ZHn;CL7E84L8@YKzX3Dq|o+eb*NBVQZGP6t2ESR$q4A-uyFYc zp&wL7^feOJ8(q%IR!{C8krd-le`&})EQgi`VM#8ZL1T6lmQCz5iFk}@i3T(px+kE^q0G;&m|pQNkw;g=0U^x%L@aei|b`@1oWGF5!s@KvGAfk zp%T`MN-;7tV|-OfX-JInk8&k7Du|;yLf{^bqpC~YgB~Fyg#E5TA91RKtTDS4rO9O@ zXv{qFuHV>Ft$}o0ps>0UN6KJWx3TZS92~5K!4@bQ7bpe>m4w!SYY^F^kY{KIhR2B` zf+^c^%emTtFjG73{6J~3To<6_9jUXlI1*P1GK;QS4R=jPeN?bK-~v^SdvvAaM3cw? zu%rd&gdB+D(E+1j9&<+f7=Oe_g{7*f1ngB;M}~H=tu1#rHozLJ7i9N@6(KYjz5(~@ zC+i2-tFW4DIvW?L4n=wjFslLs+-n93>gC)PjjkMD4vij;TFB-p)U6CIw z3)d`y`U^A6$dy&~Cp1`!>L(A2Q~jw?Hi9cB&RhZ$KmaVH3hbqMVRL^l+uIK%(xflB0-X5} z7WxdW=0eV4oD+;D(hla`7}?9bszE;oTf<)C&-#pr;Al${v zL|~h1+X$f??rT&>P@7Z{xXReNd2lvHou1c?hEa$-dpZxhs9nH9tiqv)K&mhbx0P%O zkwbGi_V-x9t9W`BnIm^ah&Q|ULKIv zAnYLQg^qki1j=Vr%_OIc7SrW{O47V?Fi*q%6}_pc(Lo&p9kNrPYfLayQU#NpOcqb0 z902W#8nOw|B`0DMHe9|)TyIjACUHTK*Gjvh(ExP2xw1iTK-Gul2LXK!BH=J2KS1y^oaVs!LD4n z{s~yy#B4mfnmQFG9@+!bG6cl{gWsOcVUpw{4rr9BnL(ICi-Twz!(f~pfZ8maRZ!_K z3`kEt?Su&&x2TaC_TKj_fgyc9i5*0n9h#CNjw>hlOR8YAJtjb{B+XW^Btm$IfyZlj zeo0GRKum?CXO{%4(Ke*h(5bKo081aYC4})f731S9Bb1AWGt%XnHDJb!N;)4759i2s z2{{3v_ObU2E%k#9(lEjZ?>satpoWG8s-P!0afigzpnYO1J3|;l|AT^$u7rL7CI+u< zC=w{)g9E4z>fC{%u)waIA~ChHx?J!{aCKD>3LK~!G8<~em27ChY*_th^%znPHXkfw zBmI@L(8}gImJ29$VCibm9%3qNp&=(?YKZI_+&17b^C(=maD7U>l}H^~6=63=Wvjvn!K(nYWvOeyktobA zI994kU}naccpM^hJMHs&nzDuks_2Be2#={l;WPO{vjb{~YM# zRdVK*R)=&~23)7~Tm^1P#3?>lpm1vuK=WPI|ry0rp%u z+#4a1lN32&gJU9_@o`x|yvDz^@u|>oL7hIgz z01r}*ab|HCshU}EN>f} z29=O}T|O>p3FVF(wh9b1Xk6KIFc1OEpaUGo05~D9!hQzp2P~v8z0+QWZ1g2*%X0rVGEBpD=q=;6&$NCFXVFC77DZ+-lB-{qw`;QP0ceX{r}rQ#2uhn2 zS8wTpOT0>0OySH!u6vwKT1A5uQwNq*(N!a?)nPQc62XYz4A{As+M5wLGNfKgb|+>Y zv}nrsk8YiF8s0eN*tO>_EJjWdL!{H;)&OiFFrdMzt`enzVtAxdGGk_yD0bf{jX?Q0 zlG_6odyMeI`M^+^G>gPASk&cd19{k5q9{l!hA5=F7hYiHxWEGvF+PMgG#VB1X2#z9 zm%{PCltP$1=rV9N7nYzFUXYO-j4Zs}aYZ_yveI8e2REg7mS0d=GcHgT|A=cryfz0Us-HY9u5|{h_Kc)uEYSN?}9fg=Cddn+|{zAt*a^w1V*2DpiwhUychD zRm0gk8FTh+PDB)BHA8X0M1nI4OaY=2m>}4570|~3*k`VwRvC!6IFrMiDl))T#OF!& zG7+JU-5%xy_bEKwFWVk zF5DHG&^{Hwjt3Fc6LgiwQsD^bl*)!(smezM2SJX=i3YA6A&nBS0kBoZmqNcl#~3`A zg`tA(!TuU491gR!bd4-2hX)kWozJy~su9(Qf`XF5Ss}XvR??0I>RVO=UPXj#k*p}U zhpZBpKU9d@p9g!mAZPK!$_l|ukPj!BPEteNV}4kmimFOp8as8uk%v#0+>vudMpPoz zoLy^FW3smFnzCytqK3G3@R|!}1~?SO3yZvBm>@|~Rf6YQ_ADd!NOETkL)czvDf_q$ zg~>y@Z6B~~$N-dn4uTgXrDd>-qG^TlJuU##VxSVHbvQtRZZ9GPcrh0#q3gRyk+c`( z#U5IbVmuO-QVipXQZMn(9Z^yq;Bx>RuJH22C2_A)D3&V~Og826MvMHN`9k{IWtKG{ zV+a4SyH7QEct%Saq88XzH8@Oqg7OAl6HNjV$Njtxw13J&v^ zy@wl8UIiPuNbIP|2Inx;g=FyX4CKVeZxU#aXWuxvW#G*NY+ljGLQUvO($=y8dfPG7VSdnpk7k=4!j1vv2s;%gkV_`b7C4U#rxg(|dbrgw2^R*t zsI&$!ylN8UwhbUrg;rxBj~z1KdHXJH`64(6lE->-eGS8b&_BYc9FLGDz+i_n4r6pMGuzbSYVW0Mb zZRn_0*k&7@P{=vePiqm)L&fkGOH>7&mp(9wIfGPgAM8pSU0Khg&@oSO>wup4j?y`$ zg)h|hT;7m;usz|4Z#mu)$n!to_87#|bb!ur6S(<^v<9rYS>jHZkxHa*^ zU2+k50~O;%WWV7vXMBrUS zPo)GRm{X+5jeriz&_N@QEm{YMZEgzb@}`9i^0S`^1~*IAU0p*JR=Xj!>dN5 zuRVc9NZ$7mmEYhI#e~> z0K)kxeeeR#b|7LHO>iQ_@BHL)Sr&0vgr&#NNML1jgQNo$b~u4^2)x6D^M(-m3ba_@ zmA>$U2}j4zc#0GXfc;zzXJ_b`BcGlIVTXkW!gT%yQ?vWIX(0UK#m{f7=878lk`OpV ztAbQ;x^v9lB6v_XQ-BGHhdIdR;-wF5`bz_|p*_lYA1Uy(ssj5Gv={HQ!Qhai8R`Y= z6h0sXT?0Pk2NB_>7Ne4_#nS`E0h1Kyfe#;{uos+AqPzm1oLM$V>`!Rmnc!75 z6K>Igc7+6N%L)#`p){}z)qoHlngE5{czc#EmLK&H#rB$9!i#K~d`^K288sd?ub;MS z@VQ0!pwoza+#Hpb_}!oWVN(TmeAUnnu(Lyh4Z1geOs2F397_M;@hCAL4l5ga!O}u6_?(Akb{O!$tThZ#P*Mdi{u=1J7P*F=wB0LreHzG41=c?} zpmlvZ#P%2ztf+xSf96@d;Eh93pbRg=8)V{QC_aqmh90>5qX7<{a28cxtDYf(wrD6z7MZwB} z_$(O5RycS)59q~U5ZQ|o6-o>Yf=Lb!i8voPe@JT*_X3FUFoz{z=XC3e=U^9f7kCl| z02!cs7-Mj#H+njZZEB@30O8AwaNZz3r&`A2Lgb*Z zynv>{5L}Ctz!rs`jz+xdvQsh#R?@IW$Xpio^dfM=1| zJ&2-(l3xM+f)kPNbNTa$fp5(B;BAgvTktexHh%OnPwr8n7H5~>XJf!# zfsf8n%4E9a!(;{XFYJWNp+4xI2<}Zr1m}RR{R$GTb*OzlGeR^H?t@0*5e$5EE}~zA z(}4${@XoUUl*q*4<5GOIXrG3|jf}im8UUZ-3It}sLo(c>(&j)ut`+&E0a*7SZJg$) z&)N2^efJDof?24*>j9>uIjqu_s#6i zyqVn@@4U4Gu4m!#E4CGTvv$l6g8^@h0}J>^uosdR2Nrv6Z@u<9UK{L|s55J)Es~L( zCZvj*C{zM9w273Ypcd6>U5T_L3M!3=8YEPaw3SGUTK|=*5^4MSp8MYX*x3b2t5k|+ zf82L}oO|!N=bm%!Irq)ILlRG#SCrmPAvy1}h^o+VUQ7$}F$=!~FgBa)Xd3Per6tLm zKxq{jV5~MKncBHycki|n%%SpcON?AkEzOcqdq1CYv$^cpE|nkE(uGlo#=Tca1aW7h z*?_@wDLP%^V$biaE-Co{ogwvmNb!%I9bqQvnd`Pj1^98@;q zpn8pcaV4a<;1~84&~cN8c9@@QQ5c(+V3B481X3TqoYgQ!(@g~Ii>BqhQ!JYD_q+|c z(dnjV*S=N9JA-Km>h9$9V#?g&L*8B=I59oJM`%-%c^0fVEV9Fn62o-7)jg)uLmvNR z{|dDTiR~~4ny7UfrHSa63_d<+s)fnkN!bczZ}AjM-%Tm*ce(jAxaGIJ3{{4IPlbE1 z>%`HcGsjv_Iybv+TTX4_J;rSC`T0_wy$aN-Z`=dhwH!D#J*BCz z3Q|kQk-TC5sRo&^GS4)Hl5n*#Hftdn#w76SZIbf6g#YI~ z)_b>d0mpGrS2wX;8F@J}@On7WhH5RpYlK|f4< zueIYz=yTPZ@3UD~Bs@SJjYxf}-I#Wio^-*9UGy@WU?{?$ARnj4`W)u!#Tmm~;}e~B zS@|tWQt-bCLhf72y_2vrq5!0Nxk{D!`*0}7P``+5eFv@rjSbGP67d~6vNozqf;3?rQ z7Y4%a*aD?uNR1Td+s2@|!HTd@qw-wQ&Mi}1HmTlHO5<5lU%j6soX<7Fy~$I$7{(1Q zK&QYBKEQ>SJKUIEdHHeZwAHy4epVhb+|;M|ZHnHfxhZa^(dZa6Ej*#xGL1yys__Uv zgWI^B>obp#I?fz^#Aqxod&Js0MBXm&<8@2|f3MY28?Lb3=uTgkJOI>IW@rm--OY0x z{ts%H3DR&Dut!`?@2h+I9*ZJ}l^Yc`;-j@}Qq@&CG_FUhUNo!Zq@;Dg# zF}u9z2o-khHXS0_)0LxMEyku5rb$U39OkJ}q)O3C=@{cxZ=$=#=e36`wYK91eJ|o4 zuSMWZdKPE8%O%U~E5PlNqE!3rr!`5fTd{Dt_{DA9jnry}Q@YLP&{UIj$Zp|yQq!Fp zU3A2rc3#hDo|?;oG|N%wCXMJhGBz&p6cXN@av<$614VUVl4#|w?}TZNBh_)KhStI( zj)7v!BrWZ_C`M+ye2CIs&fUsQ(6bXV9aV#qR;IL&X7#H{s`1Pqz7$QW;JjeMmLE`#$~>m? z6`_aI*bXoep5#-Bn0Q8TD;CO4rlca3`4D3hA!o1-++b^t7G3f#-(ti~r(PI|-6m|b zO!YNyU#^yc`sgU3uazpyn0`-^=hcpc&M&BkY5Nq=X^-COnXjB&>29MRo0%vJ*SCe* zVoB85l5Lboj3=NA>UBs=ve?3ee>rb_GGDYzitS=z!b*!)b0HGNMMFXQQHcfJN{Nz; z7TgXXwoylO=NFB%9cFc-THa3$aaL2v4lf8Vflpg?mrIB`Yc_;u$tGaES#(NjyY`v) zqDh+;Q_7k$NWF}U)x`7*YueOKyN#h}!X#c=Nj*WNHG+@6H;fi<(OolY)6pEbNH)KJ zcYCWoNwv;?Be~b6eg)8UXie*EV~X)GdDrY}p@dkt)uKr?mRsRh5N}0zOH{U{Sr5N) zAH9lsJR2Q`D#BN|c!o#?z+1AspfENO8%~>GC?;Lkv`|wv^|O?&>kA8*%YT4Nz}LE< zkg}dz9@CaAIVwBL#HW@)it2^}0wI)0Gq_drcaBJ<$Fw9FN zS!tGN&1xE!?h5tbN7fWwFSy?Hl%doP;Y!W=2v8|ChiomTY*k`9uV&5r2yJV>fS#9o z_e>_1S0WN8&62xo{`%Iwe#=Nqw@htI`h<&=mW|_* z`MHU$F(}EDs`0C<;s1foyhVHK{S~(dSLc4mmzNNZSU6$fLl$DskPlS|F?tDEw+SD{ z`nsQ)5I^3?&7vE`LHS{17%9$g2m9@~X_{S|=e)N~+$AZsr0AOqkh^JdGrrStY1d9} zb=qcgl_-8<1l zn8*d#i=8TKuW5zKns$e`Q|=d5F9F&_O5Mdy7fC!OSGw6w)7{f-E>^k;+a1d)@9lWk z*VHnuw6$dq&#i6Oxn84rzKLmHntdPtiHmA_pmoi9`}&gkN#>$ae~EAw-PJN~+3M|3 zOx9<++pO7cUpC!MO-R||GsZExJy$k(D-9Q@dyTBxPXA;cE{k|E?NC~OPvOOA4Em;# zR>R6wHqlSp`0|3rueik9#~n4Ylx3NxUe%M`oSJ;vdXUb(lG=?eic3VblwXh2dt$1g zy|fXaHY7z!ZWf);YnownH(FM_-oARZQmuX7rTwJa(v1Q))CwypR`1?4#HY({;>+~p zQ5=Rk;+92Bx@)~VFaAkqE*))DW9$5!3_mY-su?{LOktZnap?N}& ztKRH&kkcTnr9+7PJ8;T;+@V zSkoSGtJ_B^8cTaNHF(1TS+>wP+*R%My-%t(L_1GEw_LRLd?qPu+2CC%Nm!`Fuh!xf ztqYP?QP-zu%@2Lzodso~g>g3sXppz@6qBU8&*_A;F0)NV+zH)j+M9{^q3t%HtuSo+ zP&FV8)i0vW!7#YPyBU}~H7%tcN+y(;OC!)m&=f=yw!VC^1yaJ{RjS$-bdychhA{!X zbuO`D=5({8Q*i&LinocmTL za4TK#!BZ?n`d!Ng6rm61WdiEQsbC^&L)-d`&zrj6!^*e+Aa^^4Y`mGJ`|NbRI zKYr7NfAVYh-@AOn>yPD^MfEQRgO2A=5Y^8m&-1xuk-kibSpkqrH5OPPIxHRI53{@=&$M1womwUDCG}1=XnbX6Ul^EEipmj|^4w z%}iNUGUb6F6M)q2;4(+8B?CdWC0VWv1U;?kp=wbT1`N1Qz&=_o2{4HdRYN+6 zLfY$hJ<&#vg zdy=LUQ&T)Mxe(qCv!M&oF;V@XCc1tw%*9B{qh;mIJ({;fG?p9Td!XhXHNdy5=tYaa zVBsqkzHZ?~3r{MX`<{j8EPPq**3VY0`7`#Yzv3T1^pDs5;~%T)wEk?;Y5iGCzLq9m zv*bXU9I)ilG`ZB0Bhk1$H$>ys_h##RjcNkr4fwCb`V@t`gN0LKwy0viOS@f5F06EPUO6noY9is|~juCLGV+7dLF?3)$M&vuaG}@ERRZxTc z^aKhr1le3Pk%t76s0HKJjX4)YaWv&06XazgA5MX4wMvC${IAL6%3=C3j{es5ZvFrK zLmZclv5GJDs%#b`-nOs$r zEweO~v#a>eRqp6PLNwqp0~_mssTEZ2P?}<9ag2aiE~?eFw3HDXLPUzNqz0>EK?;Gb z)s+#7xZ_dn)7cz)12`5OO**R&r7SzSO6^Q0S5juFggi=(T7#h_ip8QYGKl{Ee)yT$ z>Jeg9VZ%7wP?d4$KSK_QRU}rqjN$T_;qsUfW31eh8`Ah3p&C+x8a`2}J#KnrJR0+g zDjKu35A?@Oqey2-T}g@YyE=gyPocj5kwaAwk5gAF+{ zNiK7xG*SBusRXw6L^JyfWYazdiPgV>9$=sPDiBa#&``*J$#9ul8jUm0A=4Z7I-oY? z8DM==w7P#leQrwnOcT~8jfe1CC~z8utbneTSj%K8kn*vR94ZXDqGefB#NT9i?W7MI z%Ffntk+44C!a)Zi2VFF(I`=Dh&?q|>7u4|Yv(m&O7$M_p=0aVG%S9v2K?)R^do-H6 zK@pos+RTmRr`S%nVoSoXwXUY4bQYAYSxB<$rmO2T zWDG&Ka6I^h*lR&G;W+E-j2N+O({+Xc&t0(GvxdRh6oa#^7?5aUaJGSgvV}o`bs(z0 zQLXw;>u;3HC7%`5p5ZU-OHzBHJ&icR7?xv%t^S6|Tm5{9xUuSohS^zTk#mw)K+dU8 zV~=x5pPq9_8Miiy#I1~}_JmDh?Fr+KFEqJBQBeph^&(bM2BS%jQmKd#hW!M^5gO7<^WdLBp^PylXkDICN9U^5 z5=}+5ukj}geX7n9lBO!PZ}6v-G=;4@nQXRCwU~Y7V|>!WbNr#lh>2Sa-KB+94Ls7= z`JyE9`3#;C(*QV)FwIKaY}X&`1F=+xik;^+C+s}8xrLpTFm|REAmvOho4Ma*KFBgU zlr>r3C!Q#mGbZx;jEA0X@{pq9p)!4Cb3QK0CK_By;L)ZwZ^X&3T}<=eG+)gW#oVJ} z@wpnM;@oec>^7p92v9JxU!slGoFKlgRWq7W_7p&@w`fH8&15^(f4FpmZu;lB*F|SP zziqr*{&)LotdVms7^7d%3|5uGCb3X#DoMG(tSbjH&q*?Be<|wMvCTCJPnB_QnK$vQ z83NL>mXIUmqw>Sba-d)%MUZEeNPBn~d92DYof2*IYxuV-weR@0B?XPPE#cc%)I+=! z)m~~qSi(ans^NK8Nj?$@d?aE1C!lQ|z@|5-Mia2V*lohN zY(h+j#Z0}otjQNGZltWgV)554ylCM`g}4w3&sq4g(GcHCnBZH9qWD&N;9Kc|Z>0ym zl^*h~ge<<5lJc!A`I;r=TUm0zlJc!A$rtMZEZ<5``BuVUvl^bmjZ!9#lTx@*dL${_ zD5Y?t@L5~jD3OQ(i%>6G`~?eNvG8>ZFIsp~Ap=%;&cc^1+$==AmlEwUN-D&|MSgD< zZ~d)g|MaC%?FVV((*O*WP}kWZHV5p9ZH?(yIbF?B_w?1(ygeASJ`!jPicCk zOHyU0ufFcR?K@uD>i)ED_ks24H41Q5#Kd*c`1C64Y>kB@8ag?v2-jFRA|X4y!NMCP zUc?pNpiyn;>5=0`GpyVS_-b-ul==?7hPe`C6_~TqFEUoPsjO0a)udQ53ljBbZMx5^ zd*Ygl^R*}4)wEV~?sK%7%Mg&hXV>UDN3Q|DfBmC>U-$f{e)+R!4*tfi;hi(1Yk&OQ zZ=U`8FaOQ*T;Z;}+$WwI`0?kCMStEiblLT{toqr7pL}=l55KwpmCX|_n*8U#oBO?g zxP0$3U-^7x-M$97>n2&~0gC_JoE^Q1ttVHaGJya{_vr&B_aewQ3AcgXK^OzZ0_`-p(Cm%!` zB%G(BQ=U>M-XE}KtM9_yohjLAZu|BSF5L-sX9{CSIET*Z`h5W=2No8RLsbeJM&jJ4J)f%pt74@T-(RR01q zhKF25rw7%rpM;doV_~IsrZ=CJ^PbNZ!(uMqQwqZpkNz<1r&s!2fOzc)0=Dot+J+mv zJE{l_Zd#zzj@D}L45q2rN^_m_-!_EBaccvUt2k61%8Ja{Me%H_qLvq)xi&C~o^8fU zdSVG#xy*WqyMU?ddi0QgP-Y_04FIJYLUttbl7#h-^~Oy5(*=nq&!|Efy8?*m5Nwdi z4zW8x5A|n=SSJ!TlJE@T3a8;Rpj*n)H+y^wlECp0^u7V$If0{XRp|y;DMSTitJaf7 za0jYN&%2Z79Y{OYh0n4lb~he(K7)@ETU#+rdoMeQ;8@do?IM-t4$_X?kV^eI=?!~= z#30z!&-mSoG_MEcgSN7YZ7w{bF5lj&X>O@CpY6qxX>zIX?OXq z)O#ze`f4757(!>UWl;nR_U7v6MG!(|r?fb4R5%~znI7ef9O2S@(R)N;mD?FLu(6?kuZ}*=rIjy%ZL0V2srO%Arkf9Xm8b4yr^hE_h_*U6-l^{o=C9Hbwgs6crQ{grZ_b z9(V~Qlqq3{D?>HeM9gRU%~TKYgyoaUA7+u#1A{rj?Vgug)qwJCOba^FUUe2>M@HBty zZNU46{ErmYUbP|Ekc@Tk*=e)(3~HuWtki#k?HUgC8aD(*Bx0y{h~EB*KQ@L#+R7AQ z?}j4}I}ZjDra93Jc28`d+QorzL*=2j`K|po+xrOMe8{n13E47NArZ3WN4Q!iBzUvG`iE5 z+O+%tJyt>~;#B1F*%A-vXDdFtQW8ww(V-JgZ&($$tIRH(jrVeS_-xG0FY&Bh0~j~a z;!|JMz+K`2hdIK|32hzD=6t=*YP&daE0RJ^moEVDOMzR~R@<%@vbqh+bT+BC)xMF& zxsEz^nWfcP61Za09M&N3Q}S@0SB+7=-?S2D58Bx4U06q}sKl4Oo(%d7E1ETWY2cO& z4}Xw9f9uRFS6f)O^Dd!Td%~`BaaRW%=d$}ZV!O6KK0Xucd)fUg@+AUX$>PcZ2T~Ou zp5dw}R}5UQC7r81AGq2dH}2|*S8Z7xuOAs%zjpn|y7jScrkI|ZjCbmKn&DD$LAa3( z@txc=G#lSH9B-d|z`#&&z^Y|M>Z`XZ!#d|nfa<_a4{JT)6n#N2M- zFBOVs_Q&%EyMFk(;SI2EAQOn6%S7tknfKjyY~m=_oHlMXusgD6Wo!NrQ!V}ZSH


=XQ>l>@d)8_59m^>J41Z{Pmv3^VX!H9-d8)-)G*&BcN5C z$NLD!G<57sAEwo@EB##UR7;;a(fK;Q=*|wJBv+>y#MgU{0uq2z^Pop(OLrU02nSRA z?*y6kxW#4= zC*k?5Z_7F9Bjh%Y-%#HAqF%>(*fC<1@1stNyN=`Oe6Buk({h>+I30dUFHFqP7CD4+|#hdt%l<3ZJyS15J$0fgt{?G$Fh#mnvN;O zT;DdsuQ+DdE;H0Dw)e4Edn1fD<~lo1IUW4Ek2YdvMHkNGo z-ePdOfts=MQS1LCrBjrSTIs!%>7bbBC0!TxZt)vQ#yeu;-ATXVI?ca&)=Z0fzBTnM zjP9{KQB>pbpXAWY`OE0o!vpHdwz=@qq%*oYl&6u3<6C)B2N2bo4!=pNbmqPZtz)G7 zDOrezcN+ifppG!ru`A7f%F{~O0ZsDXj)$9kv<58_*rklRAK?UZ!8g)3T4}{uyxs{r zpW~bS?%WL~8>5U=Mnunit.framework - + - Delegate used by tests that execute code and - capture any thrown exception. + The different targets a test action attribute can be applied to - + - The Assert class contains a collection of static methods that - implement the most common assertions used in NUnit. + Default target, which is determined by where the action attribute is attached - + - We don't actually want any instances of this object, but some people - like to inherit from it to add other static methods. Hence, the - protected constructor disallows any instances of this object. + Target a individual test case - + - The Equals method throws an AssertionException. This is done - to make sure there is no mistake by calling this function. + Target a suite of test cases - - - + - override the default ReferenceEquals to throw an AssertionException. This - implementation makes sure there is no mistake in calling this function - as part of Assert. + FrameworkController provides a facade for use in loading, browsing + and running tests without requiring a reference to the NUnit + framework. All calls are encapsulated in constructors for + this class and its nested classes, which only require the + types of the Common Type System as arguments. + + The controller supports four actions: Load, Explore, Count and Run. + They are intended to be called by a driver, which should allow for + proper sequencing of calls. Load must be called before any of the + other actions. The driver may support other actions, such as + reload on run, by combining these calls. - - - + - Throws a with the message and arguments - that are passed in. This allows a test to be cut short, with a result - of success returned to NUnit. + Construct a FrameworkController using the default builder and runner. - The message to initialize the with. - Arguments to be used in formatting the message + The AssemblyName or path to the test assembly + A prefix used for all test ids created under this controller. + A Dictionary of settings to use in loading and running the tests - + - Throws a with the message and arguments - that are passed in. This allows a test to be cut short, with a result - of success returned to NUnit. + Construct a FrameworkController using the default builder and runner. - The message to initialize the with. + The test assembly + A prefix used for all test ids created under this controller. + A Dictionary of settings to use in loading and running the tests - + - Throws a with the message and arguments - that are passed in. This allows a test to be cut short, with a result - of success returned to NUnit. + Construct a FrameworkController, specifying the types to be used + for the runner and builder. This constructor is provided for + purposes of development. + The full AssemblyName or the path to the test assembly + A prefix used for all test ids created under this controller. + A Dictionary of settings to use in loading and running the tests + The Type of the test runner + The Type of the test builder - + - Throws an with the message and arguments - that are passed in. This is used by the other Assert functions. + Construct a FrameworkController, specifying the types to be used + for the runner and builder. This constructor is provided for + purposes of development. - The message to initialize the with. - Arguments to be used in formatting the message + The test assembly + A prefix used for all test ids created under this controller. + A Dictionary of settings to use in loading and running the tests + The Type of the test runner + The Type of the test builder - + - Throws an with the message that is - passed in. This is used by the other Assert functions. + Gets the ITestAssemblyBuilder used by this controller instance. - The message to initialize the with. + The builder. - + - Throws an . - This is used by the other Assert functions. + Gets the ITestAssemblyRunner used by this controller instance. + The runner. - + - Throws an with the message and arguments - that are passed in. This causes the test to be reported as ignored. + Gets the AssemblyName or the path for which this FrameworkController was created - The message to initialize the with. - Arguments to be used in formatting the message - + - Throws an with the message that is - passed in. This causes the test to be reported as ignored. + Gets the Assembly for which this - The message to initialize the with. - + - Throws an . - This causes the test to be reported as ignored. + Gets a dictionary of settings for the FrameworkController - + - Throws an with the message and arguments - that are passed in. This causes the test to be reported as inconclusive. + Loads the tests in the assembly - The message to initialize the with. - Arguments to be used in formatting the message + - + - Throws an with the message that is - passed in. This causes the test to be reported as inconclusive. + Returns info about the tests in an assembly - The message to initialize the with. + A string containing the XML representation of the filter to use + The XML result of exploring the tests - + - Throws an . - This causes the test to be reported as Inconclusive. + Runs the tests in an assembly + A string containing the XML representation of the filter to use + The XML result of the test run - + - Apply a constraint to an actual value, succeeding if the constraint - is satisfied and throwing an assertion exception on failure. + Runs the tests in an assembly syncronously reporting back the test results through the callback + or through the return value - The actual value to test - A Constraint to be applied + The callback that receives the test results + A string containing the XML representation of the filter to use + The XML result of the test run - + - Apply a constraint to an actual value, succeeding if the constraint - is satisfied and throwing an assertion exception on failure. + Runs the tests in an assembly asyncronously reporting back the test results through the callback - The actual value to test - A Constraint to be applied - The message that will be displayed on failure + The callback that receives the test results + A string containing the XML representation of the filter to use - + - Apply a constraint to an actual value, succeeding if the constraint - is satisfied and throwing an assertion exception on failure. + Stops the test run - The actual value to test - A Constraint expression to be applied - The message that will be displayed on failure - Arguments to be used in formatting the message + True to force the stop, false for a cooperative stop - + - Asserts that a condition is true. If the condition is false the method throws - an . - - The evaluated condition - The message to display if the condition is false - Arguments to be used in formatting the message + Counts the number of test cases in the loaded TestSuite +
+ A string containing the XML representation of the filter to use + The number of tests
- + - Asserts that a condition is true. If the condition is false the method throws - an . + Inserts environment element - The evaluated condition - The message to display if the condition is false + Target node + The new node - + - Asserts that a condition is true. If the condition is false the method throws - an . + Inserts settings element - The evaluated condition + Target node + Settings dictionary + The new node - + - Apply a constraint to an actual value, succeeding if the constraint - is satisfied and throwing an assertion exception on failure. + FrameworkControllerAction is the base class for all actions + performed against a FrameworkController. - An ActualValueDelegate returning the value to be tested - A Constraint expression to be applied - + - Apply a constraint to an actual value, succeeding if the constraint - is satisfied and throwing an assertion exception on failure. + LoadTestsAction loads a test into the FrameworkController - An ActualValueDelegate returning the value to be tested - A Constraint expression to be applied - The message that will be displayed on failure - + - Apply a constraint to an actual value, succeeding if the constraint - is satisfied and throwing an assertion exception on failure. + LoadTestsAction loads the tests in an assembly. - An ActualValueDelegate returning the value to be tested - A Constraint expression to be applied - The message that will be displayed on failure - Arguments to be used in formatting the message + The controller. + The callback handler. - + - Apply a constraint to a referenced value, succeeding if the constraint - is satisfied and throwing an assertion exception on failure. + ExploreTestsAction returns info about the tests in an assembly - The actual value to test - A Constraint to be applied - + - Apply a constraint to a referenced value, succeeding if the constraint - is satisfied and throwing an assertion exception on failure. + Initializes a new instance of the class. - The actual value to test - A Constraint to be applied - The message that will be displayed on failure + The controller for which this action is being performed. + Filter used to control which tests are included (NYI) + The callback handler. - + - Apply a constraint to a referenced value, succeeding if the constraint - is satisfied and throwing an assertion exception on failure. + CountTestsAction counts the number of test cases in the loaded TestSuite + held by the FrameworkController. - The actual value to test - A Constraint to be applied - The message that will be displayed on failure - Arguments to be used in formatting the message - + - Asserts that the code represented by a delegate throws an exception - that satisfies the constraint provided. + Construct a CountsTestAction and perform the count of test cases. - A TestDelegate to be executed - A ThrowsConstraint used in the test + A FrameworkController holding the TestSuite whose cases are to be counted + A string containing the XML representation of the filter to use + A callback handler used to report results - + - Apply a constraint to an actual value, succeeding if the constraint - is satisfied and throwing an assertion exception on failure. - Used as a synonym for That in rare cases where a private setter - causes a Visual Basic compilation error. + RunTestsAction runs the loaded TestSuite held by the FrameworkController. - The actual value to test - A Constraint to be applied - + - Apply a constraint to an actual value, succeeding if the constraint - is satisfied and throwing an assertion exception on failure. - Used as a synonym for That in rare cases where a private setter - causes a Visual Basic compilation error. + Construct a RunTestsAction and run all tests in the loaded TestSuite. - The actual value to test - A Constraint to be applied - The message that will be displayed on failure + A FrameworkController holding the TestSuite to run + A string containing the XML representation of the filter to use + A callback handler used to report results - + - Apply a constraint to an actual value, succeeding if the constraint - is satisfied and throwing an assertion exception on failure. - Used as a synonym for That in rare cases where a private setter - causes a Visual Basic compilation error. + RunAsyncAction initiates an asynchronous test run, returning immediately - - This method is provided for use by VB developers needing to test - the value of properties with private setters. - - The actual value to test - A Constraint expression to be applied - The message that will be displayed on failure - Arguments to be used in formatting the message - + - Verifies that a delegate throws a particular exception when called. + Construct a RunAsyncAction and run all tests in the loaded TestSuite. - A constraint to be satisfied by the exception - A TestDelegate - The message that will be displayed on failure - Arguments to be used in formatting the message + A FrameworkController holding the TestSuite to run + A string containing the XML representation of the filter to use + A callback handler used to report results - + - Verifies that a delegate throws a particular exception when called. + StopRunAction stops an ongoing run. - A constraint to be satisfied by the exception - A TestDelegate - The message that will be displayed on failure - + - Verifies that a delegate throws a particular exception when called. + Construct a StopRunAction and stop any ongoing run. If no + run is in process, no error is raised. - A constraint to be satisfied by the exception - A TestDelegate + The FrameworkController for which a run is to be stopped. + True the stop should be forced, false for a cooperative stop. + >A callback handler used to report results + A forced stop will cause threads and processes to be killed as needed. - + - Verifies that a delegate throws a particular exception when called. + Implementation of ITestAssemblyRunner - The exception Type expected - A TestDelegate - The message that will be displayed on failure - Arguments to be used in formatting the message - + - Verifies that a delegate throws a particular exception when called. + Initializes a new instance of the class. - The exception Type expected - A TestDelegate - The message that will be displayed on failure + The builder. - + - Verifies that a delegate throws a particular exception when called. + The tree of tests that was loaded by the builder - The exception Type expected - A TestDelegate - + - Verifies that a delegate throws a particular exception when called. + The test result, if a run has completed - Type of the expected exception - A TestDelegate - The message that will be displayed on failure - Arguments to be used in formatting the message - + - Verifies that a delegate throws a particular exception when called. + Indicates whether a test is loaded - Type of the expected exception - A TestDelegate - The message that will be displayed on failure - + - Verifies that a delegate throws a particular exception when called. + Indicates whether a test is running - Type of the expected exception - A TestDelegate - + - Verifies that a delegate throws an exception when called - and returns it. + Indicates whether a test run is complete - A TestDelegate - The message that will be displayed on failure - Arguments to be used in formatting the message - + - Verifies that a delegate throws an exception when called - and returns it. + Our settings, specified when loading the assembly - A TestDelegate - The message that will be displayed on failure - + - Verifies that a delegate throws an exception when called - and returns it. + The top level WorkItem created for the assembly as a whole - A TestDelegate - + - Verifies that a delegate throws an exception of a certain Type - or one derived from it when called and returns it. + The TestExecutionContext for the top level WorkItem - The expected Exception Type - A TestDelegate - The message that will be displayed on failure - Arguments to be used in formatting the message - + - Verifies that a delegate throws an exception of a certain Type - or one derived from it when called and returns it. + Loads the tests found in an Assembly - The expected Exception Type - A TestDelegate - The message that will be displayed on failure + File name of the assembly to load + Dictionary of option settings for loading the assembly + True if the load was successful - + - Verifies that a delegate throws an exception of a certain Type - or one derived from it when called and returns it. + Loads the tests found in an Assembly - The expected Exception Type - A TestDelegate + The assembly to load + Dictionary of option settings for loading the assembly + True if the load was successful - + - Verifies that a delegate throws an exception of a certain Type - or one derived from it when called and returns it. + Count Test Cases using a filter - The expected Exception Type - A TestDelegate - The message that will be displayed on failure - Arguments to be used in formatting the message + The filter to apply + The number of test cases found - + - Verifies that a delegate throws an exception of a certain Type - or one derived from it when called and returns it. + Run selected tests and return a test result. The test is run synchronously, + and the listener interface is notified as it progresses. - The expected Exception Type - A TestDelegate - The message that will be displayed on failure + Interface to receive EventListener notifications. + A test filter used to select tests to be run + - + - Verifies that a delegate throws an exception of a certain Type - or one derived from it when called and returns it. + Run selected tests asynchronously, notifying the listener interface as it progresses. - The expected Exception Type - A TestDelegate + Interface to receive EventListener notifications. + A test filter used to select tests to be run + + RunAsync is a template method, calling various abstract and + virtual methods to be overridden by derived classes. + - + - Verifies that a delegate does not throw an exception + Wait for the ongoing run to complete. - A TestDelegate - The message that will be displayed on failure - Arguments to be used in formatting the message + Time to wait in milliseconds + True if the run completed, otherwise false - + - Verifies that a delegate does not throw an exception. + Signal any test run that is in process to stop. Return without error if no test is running. - A TestDelegate - The message that will be displayed on failure + If true, kill any tests that are currently running - + - Verifies that a delegate does not throw an exception. + Initiate the test run. - A TestDelegate - + - Asserts that a condition is true. If the condition is false the method throws - an . + Create the initial TestExecutionContext used to run tests - The evaluated condition - The message to display in case of failure - Array of objects to be used in formatting the message + The ITestListener specified in the RunAsync call - + - Asserts that a condition is true. If the condition is false the method throws - an . + Handle the the Completed event for the top level work item - The evaluated condition - The message to display in case of failure - + - Asserts that a condition is true. If the condition is false the method throws - an . + The ITestAssemblyBuilder interface is implemented by a class + that is able to build a suite of tests given an assembly or + an assembly filename. - The evaluated condition - + - Asserts that a condition is true. If the condition is false the method throws - an . + Build a suite of tests from a provided assembly - The evaluated condition - The message to display in case of failure - Array of objects to be used in formatting the message + The assembly from which tests are to be built + A dictionary of options to use in building the suite + A TestSuite containing the tests found in the assembly - + - Asserts that a condition is true. If the condition is false the method throws - an . + Build a suite of tests given the filename of an assembly - The evaluated condition - The message to display in case of failure + The filename of the assembly from which tests are to be built + A dictionary of options to use in building the suite + A TestSuite containing the tests found in the assembly - + - Asserts that a condition is true. If the condition is false the method throws - an . + The ITestAssemblyRunner interface is implemented by classes + that are able to execute a suite of tests loaded + from an assembly. - The evaluated condition - + - Asserts that a condition is false. If the condition is true the method throws - an . - - The evaluated condition - The message to display in case of failure - Array of objects to be used in formatting the message + Gets the tree of loaded tests, or null if + no tests have been loaded. +
- + - Asserts that a condition is false. If the condition is true the method throws - an . - - The evaluated condition - The message to display in case of failure + Gets the tree of test results, if the test + run is completed, otherwise null. +
- + - Asserts that a condition is false. If the condition is true the method throws - an . - - The evaluated condition + Indicates whether a test has been loaded +
- + - Asserts that a condition is false. If the condition is true the method throws - an . - - The evaluated condition - The message to display in case of failure - Array of objects to be used in formatting the message + Indicates whether a test is currently running +
- + - Asserts that a condition is false. If the condition is true the method throws - an . - - The evaluated condition - The message to display in case of failure + Indicates whether a test run is complete +
- + - Asserts that a condition is false. If the condition is true the method throws - an . - - The evaluated condition + Loads the tests found in an Assembly, returning an + indication of whether or not the load succeeded. +
+ File name of the assembly to load + Dictionary of options to use in loading the test + An ITest representing the loaded tests - + - Verifies that the object that is passed in is not equal to null - If the object is null then an - is thrown. + Loads the tests found in an Assembly, returning an + indication of whether or not the load succeeded. - The object that is to be tested - The message to display in case of failure - Array of objects to be used in formatting the message + The assembly to load + Dictionary of options to use in loading the test + An ITest representing the loaded tests - + - Verifies that the object that is passed in is not equal to null - If the object is null then an - is thrown. + Count Test Cases using a filter - The object that is to be tested - The message to display in case of failure + The filter to apply + The number of test cases found - + - Verifies that the object that is passed in is not equal to null - If the object is null then an - is thrown. + Run selected tests and return a test result. The test is run synchronously, + and the listener interface is notified as it progresses. - The object that is to be tested + Interface to receive ITestListener notifications. + A test filter used to select tests to be run - + - Verifies that the object that is passed in is not equal to null - If the object is null then an - is thrown. + Run selected tests asynchronously, notifying the listener interface as it progresses. - The object that is to be tested - The message to display in case of failure - Array of objects to be used in formatting the message + Interface to receive EventListener notifications. + A test filter used to select tests to be run - + - Verifies that the object that is passed in is not equal to null - If the object is null then an - is thrown. + Wait for the ongoing run to complete. - The object that is to be tested - The message to display in case of failure + Time to wait in milliseconds + True if the run completed, otherwise false - + - Verifies that the object that is passed in is not equal to null - If the object is null then an - is thrown. + Signal any test run that is in process to stop. Return without error if no test is running. - The object that is to be tested + If true, kill any test-running threads - + - Verifies that the object that is passed in is equal to null - If the object is not null then an - is thrown. + DefaultTestAssemblyBuilder loads a single assembly and builds a TestSuite + containing test fixtures present in the assembly. - The object that is to be tested - The message to display in case of failure - Array of objects to be used in formatting the message - + - Verifies that the object that is passed in is equal to null - If the object is not null then an - is thrown. + The default suite builder used by the test assembly builder. - The object that is to be tested - The message to display in case of failure - + - Verifies that the object that is passed in is equal to null - If the object is not null then an - is thrown. + Initializes a new instance of the class. - The object that is to be tested - + - Verifies that the object that is passed in is equal to null - If the object is not null then an - is thrown. + Build a suite of tests from a provided assembly - The object that is to be tested - The message to display in case of failure - Array of objects to be used in formatting the message + The assembly from which tests are to be built + A dictionary of options to use in building the suite + + A TestSuite containing the tests found in the assembly + - + - Verifies that the object that is passed in is equal to null - If the object is not null then an - is thrown. + Build a suite of tests given the filename of an assembly - The object that is to be tested - The message to display in case of failure + The filename of the assembly from which tests are to be built + A dictionary of options to use in building the suite + + A TestSuite containing the tests found in the assembly + - + - Verifies that the object that is passed in is equal to null - If the object is not null then an - is thrown. + Marks a test that must run in a particular threading apartment state, causing it + to run in a separate thread if necessary. - The object that is to be tested - + - Verifies that two ints are equal. If they are not, then an - is thrown. + Construct an ApartmentAttribute - The expected value - The actual value - The message to display in case of failure - Array of objects to be used in formatting the message + The apartment state that this test must be run under. You must pass in a valid apartment state. - + - Verifies that two ints are equal. If they are not, then an - is thrown. + Provides the Author of a test or test fixture. - The expected value - The actual value - The message to display in case of failure - + - Verifies that two ints are equal. If they are not, then an - is thrown. + Initializes a new instance of the class. - The expected value - The actual value + The name of the author. - + - Verifies that two longs are equal. If they are not, then an - is thrown. + Initializes a new instance of the class. - The expected value - The actual value - The message to display in case of failure - Array of objects to be used in formatting the message + The name of the author. + The email address of the author. - + - Verifies that two longs are equal. If they are not, then an - is thrown. + Marks a test to use a particular CombiningStrategy to join + any parameter data provided. Since this is the default, the + attribute is optional. - The expected value - The actual value - The message to display in case of failure - + - Verifies that two longs are equal. If they are not, then an - is thrown. + Construct a CombiningStrategyAttribute incorporating an + ICombiningStrategy and an IParamterDataProvider. - The expected value - The actual value + Combining strategy to be used in combining data + An IParameterDataProvider to supply data - + - Verifies that two unsigned ints are equal. If they are not, then an - is thrown. + Construct a CombiningStrategyAttribute incorporating an object + that implements ICombiningStrategy and an IParameterDataProvider. + This constructor is provided for CLS compliance. - The expected value - The actual value - The message to display in case of failure - Array of objects to be used in formatting the message + Combining strategy to be used in combining data + An IParameterDataProvider to supply data - + - Verifies that two unsigned ints are equal. If they are not, then an - is thrown. + Construct one or more TestMethods from a given MethodInfo, + using available parameter data. - The expected value - The actual value - The message to display in case of failure + The MethodInfo for which tests are to be constructed. + The suite to which the tests will be added. + One or more TestMethods - + - Verifies that two unsigned ints are equal. If they are not, then an - is thrown. + Modify the test by adding the name of the combining strategy + to the properties. - The expected value - The actual value + The test to modify - + - Verifies that two unsigned longs are equal. If they are not, then an - is thrown. + SingleThreadedAttribute applies to a test fixture and indicates + that all the child tests must be run on the same thread as the + OneTimeSetUp and OneTimeTearDown. It sets a flag in the + TestExecutionContext and forces all tests to be run sequentially + on the current thread. Any ParallelScope setting is ignored. - The expected value - The actual value - The message to display in case of failure - Array of objects to be used in formatting the message - + - Verifies that two unsigned longs are equal. If they are not, then an - is thrown. + Apply changes to the TestExecutionContext - The expected value - The actual value - The message to display in case of failure + The TestExecutionContext - + - Verifies that two unsigned longs are equal. If they are not, then an - is thrown. + TestAssemblyDirectoryResolveAttribute is used to mark a test assembly as needing a + special assembly resolution hook that will explicitly search the test assembly's + directory for dependent assemblies. This works around a conflict between mixed-mode + assembly initialization and tests running in their own AppDomain in some cases. - The expected value - The actual value - + - Verifies that two decimals are equal. If they are not, then an - is thrown. + Defines the order that the test will run in - The expected value - The actual value - The message to display in case of failure - Array of objects to be used in formatting the message - + - Verifies that two decimals are equal. If they are not, then an - is thrown. + Defines the order that the test will run in - The expected value - The actual value - The message to display in case of failure - + - Verifies that two decimals are equal. If they are not, then an - is thrown. + Defines the order that the test will run in - The expected value - The actual value + - + - Verifies that two doubles are equal considering a delta. If the - expected value is infinity then the delta value is ignored. If - they are not equal then an is - thrown. + Modifies a test as defined for the specific attribute. - The expected value - The actual value - The maximum acceptable difference between the - the expected and the actual - The message to display in case of failure - Array of objects to be used in formatting the message + The test to modify - + - Verifies that two doubles are equal considering a delta. If the - expected value is infinity then the delta value is ignored. If - they are not equal then an is - thrown. + RepeatAttribute may be applied to test case in order + to run it multiple times. - The expected value - The actual value - The maximum acceptable difference between the - the expected and the actual - The message to display in case of failure - + - Verifies that two doubles are equal considering a delta. If the - expected value is infinity then the delta value is ignored. If - they are not equal then an is - thrown. + Construct a RepeatAttribute - The expected value - The actual value - The maximum acceptable difference between the - the expected and the actual + The number of times to run the test - + - Verifies that two doubles are equal considering a delta. If the - expected value is infinity then the delta value is ignored. If - they are not equal then an is - thrown. + Wrap a command and return the result. - The expected value - The actual value - The maximum acceptable difference between the - the expected and the actual - The message to display in case of failure - Array of objects to be used in formatting the message + The command to be wrapped + The wrapped command - + - Verifies that two doubles are equal considering a delta. If the - expected value is infinity then the delta value is ignored. If - they are not equal then an is - thrown. + The test command for the RetryAttribute - The expected value - The actual value - The maximum acceptable difference between the - the expected and the actual - The message to display in case of failure - + - Verifies that two doubles are equal considering a delta. If the - expected value is infinity then the delta value is ignored. If - they are not equal then an is - thrown. + Initializes a new instance of the class. - The expected value - The actual value - The maximum acceptable difference between the - the expected and the actual + The inner command. + The number of repetitions - + - Verifies that two objects are equal. Two objects are considered - equal if both are null, or if both have the same value. NUnit - has special semantics for some object types. - If they are not equal an is thrown. + Runs the test, saving a TestResult in the supplied TestExecutionContext. - The value that is expected - The actual value - The message to display in case of failure - Array of objects to be used in formatting the message + The context in which the test should run. + A TestResult - + - Verifies that two objects are equal. Two objects are considered - equal if both are null, or if both have the same value. NUnit - has special semantics for some object types. - If they are not equal an is thrown. + Attribute used to identify a method that is called once + after all the child tests have run. The method is + guaranteed to be called, even if an exception is thrown. - The value that is expected - The actual value - The message to display in case of failure - + - Verifies that two objects are equal. Two objects are considered - equal if both are null, or if both have the same value. NUnit - has special semantics for some object types. - If they are not equal an is thrown. + Attribute used to identify a method that is called once + to perform setup before any child tests are run. - The value that is expected - The actual value - + - Verifies that two ints are not equal. If they are equal, then an - is thrown. + LevelOfParallelismAttribute is used to set the number of worker threads + that may be allocated by the framework for running tests. - The expected value - The actual value - The message to display in case of failure - Array of objects to be used in formatting the message - + - Verifies that two ints are not equal. If they are equal, then an - is thrown. + Construct a LevelOfParallelismAttribute. - The expected value - The actual value - The message to display in case of failure + The number of worker threads to be created by the framework. - + - Verifies that two ints are not equal. If they are equal, then an - is thrown. + ParallelizableAttribute is used to mark tests that may be run in parallel. - The expected value - The actual value - + - Verifies that two longs are not equal. If they are equal, then an - is thrown. + Construct a ParallelizableAttribute using default ParallelScope.Self. - The expected value - The actual value - The message to display in case of failure - Array of objects to be used in formatting the message - + - Verifies that two longs are not equal. If they are equal, then an - is thrown. + Construct a ParallelizableAttribute with a specified scope. - The expected value - The actual value - The message to display in case of failure + The ParallelScope associated with this attribute. - + - Verifies that two longs are not equal. If they are equal, then an - is thrown. + Modify the context to be used for child tests - The expected value - The actual value + The current TestExecutionContext - + - Verifies that two unsigned ints are not equal. If they are equal, then an - is thrown. + The ParallelScope enumeration permits specifying the degree to + which a test and its descendants may be run in parallel. - The expected value - The actual value - The message to display in case of failure - Array of objects to be used in formatting the message - + - Verifies that two unsigned ints are not equal. If they are equal, then an - is thrown. + No Parallelism is permitted - The expected value - The actual value - The message to display in case of failure - + - Verifies that two unsigned ints are not equal. If they are equal, then an - is thrown. + The test itself may be run in parallel with others at the same level - The expected value - The actual value - + - Verifies that two unsigned longs are not equal. If they are equal, then an - is thrown. + Descendants of the test may be run in parallel with one another - The expected value - The actual value - The message to display in case of failure - Array of objects to be used in formatting the message - + - Verifies that two unsigned longs are not equal. If they are equal, then an - is thrown. + Descendants of the test down to the level of TestFixtures may be run in parallel - The expected value - The actual value - The message to display in case of failure - + - Verifies that two unsigned longs are not equal. If they are equal, then an - is thrown. + Provide actions to execute before and after tests. - The expected value - The actual value - + - Verifies that two decimals are not equal. If they are equal, then an - is thrown. + Executed before each test is run - The expected value - The actual value - The message to display in case of failure - Array of objects to be used in formatting the message + The test that is going to be run. - + - Verifies that two decimals are not equal. If they are equal, then an - is thrown. + Executed after each test is run - The expected value - The actual value - The message to display in case of failure + The test that has just been run. - + - Verifies that two decimals are not equal. If they are equal, then an - is thrown. + Provides the target for the action attribute - The expected value - The actual value - + - Verifies that two floats are not equal. If they are equal, then an - is thrown. + TestCaseSourceAttribute indicates the source to be used to + provide test fixture instances for a test class. - The expected value - The actual value - The message to display in case of failure - Array of objects to be used in formatting the message - + - Verifies that two floats are not equal. If they are equal, then an - is thrown. + Error message string is public so the tests can use it - The expected value - The actual value - The message to display in case of failure - + - Verifies that two floats are not equal. If they are equal, then an - is thrown. + Construct with the name of the method, property or field that will provide data - The expected value - The actual value + The name of a static method, property or field that will provide data. - + - Verifies that two doubles are not equal. If they are equal, then an - is thrown. + Construct with a Type and name - The expected value - The actual value - The message to display in case of failure - Array of objects to be used in formatting the message + The Type that will provide data + The name of a static method, property or field that will provide data. - + - Verifies that two doubles are not equal. If they are equal, then an - is thrown. + Construct with a Type - The expected value - The actual value - The message to display in case of failure + The type that will provide data - + - Verifies that two doubles are not equal. If they are equal, then an - is thrown. + The name of a the method, property or fiend to be used as a source - The expected value - The actual value - + - Verifies that two objects are not equal. Two objects are considered - equal if both are null, or if both have the same value. NUnit - has special semantics for some object types. - If they are equal an is thrown. + A Type to be used as a source - The value that is expected - The actual value - The message to display in case of failure - Array of objects to be used in formatting the message - + - Verifies that two objects are not equal. Two objects are considered - equal if both are null, or if both have the same value. NUnit - has special semantics for some object types. - If they are equal an is thrown. + Gets or sets the category associated with every fixture created from + this attribute. May be a single category or a comma-separated list. - The value that is expected - The actual value - The message to display in case of failure - + - Verifies that two objects are not equal. Two objects are considered - equal if both are null, or if both have the same value. NUnit - has special semantics for some object types. - If they are equal an is thrown. + Construct one or more TestFixtures from a given Type, + using available parameter data. - The value that is expected - The actual value + The TypeInfo for which fixures are to be constructed. + One or more TestFixtures as TestSuite - + - Asserts that two objects refer to the same object. If they - are not the same an is thrown. + Returns a set of ITestFixtureData items for use as arguments + to a parameterized test fixture. - The expected object - The actual object - The message to display in case of failure - Array of objects to be used in formatting the message + The type for which data is needed. + - + - Asserts that two objects refer to the same object. If they - are not the same an is thrown. + Indicates which class the test or test fixture is testing - The expected object - The actual object - The message to display in case of failure - + - Asserts that two objects refer to the same object. If they - are not the same an is thrown. + Initializes a new instance of the class. - The expected object - The actual object + The type that is being tested. - + - Asserts that two objects do not refer to the same object. If they - are the same an is thrown. + Initializes a new instance of the class. - The expected object - The actual object - The message to display in case of failure - Array of objects to be used in formatting the message + The type that is being tested. - + - Asserts that two objects do not refer to the same object. If they - are the same an is thrown. + CollectionSupersetConstraint is used to determine whether + one collection is a superset of another - The expected object - The actual object - The message to display in case of failure - + - Asserts that two objects do not refer to the same object. If they - are the same an is thrown. + Construct a CollectionSupersetConstraint - The expected object - The actual object + The collection that the actual value is expected to be a superset of - - - Verifies that the double that is passed in is an NaN value. - If the object is not NaN then an - is thrown. + + + The display name of this Constraint for use by ToString(). + The default value is the name of the constraint with + trailing "Constraint" removed. Derived classes may set + this to another name in their constructors. - The value that is to be tested - The message to display in case of failure - Array of objects to be used in formatting the message - + - Verifies that the double that is passed in is an NaN value. - If the object is not NaN then an - is thrown. + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. - The value that is to be tested - The message to display in case of failure - + - Verifies that the double that is passed in is an NaN value. - If the object is not NaN then an - is thrown. + Test whether the actual collection is a superset of + the expected collection provided. - The value that is to be tested + + - + - Verifies that the double that is passed in is an NaN value. - If the object is not NaN then an - is thrown. + Flag the constraint to use the supplied predicate function - The value that is to be tested - The message to display in case of failure - Array of objects to be used in formatting the message + The comparison function to use. + Self. - + - Verifies that the double that is passed in is an NaN value. - If the object is not NaN then an - is thrown. + DictionaryContainsValueConstraint is used to test whether a dictionary + contains an expected object as a value. - The value that is to be tested - The message to display in case of failure - + - Verifies that the double that is passed in is an NaN value. - If the object is not NaN then an - is thrown. + Construct a DictionaryContainsValueConstraint - The value that is to be tested + - - - Assert that a string is empty - that is equal to string.Empty + + + The display name of this Constraint for use by ToString(). + The default value is the name of the constraint with + trailing "Constraint" removed. Derived classes may set + this to another name in their constructors. - The string to be tested - The message to display in case of failure - Array of objects to be used in formatting the message - + - Assert that a string is empty - that is equal to string.Empty + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. - The string to be tested - The message to display in case of failure - + - Assert that a string is empty - that is equal to string.Empty + Test whether the expected value is contained in the dictionary - The string to be tested - + - Assert that an array, list or other collection is empty + The EqualConstraintResult class is tailored for formatting + and displaying the result of an EqualConstraint. - An array, list or other collection implementing ICollection - The message to display in case of failure - Array of objects to be used in formatting the message - + - Assert that an array, list or other collection is empty + Construct an EqualConstraintResult - An array, list or other collection implementing ICollection - The message to display in case of failure - + - Assert that an array, list or other collection is empty + Write a failure message. Overridden to provide custom + failure messages for EqualConstraint. - An array, list or other collection implementing ICollection + The MessageWriter to write to - + - Assert that a string is not empty - that is not equal to string.Empty + Display the failure information for two collections that did not match. - The string to be tested - The message to display in case of failure - Array of objects to be used in formatting the message + The MessageWriter on which to display + The expected collection. + The actual collection + The depth of this failure in a set of nested collections - + - Assert that a string is not empty - that is not equal to string.Empty + Displays a single line showing the types and sizes of the expected + and actual collections or arrays. If both are identical, the value is + only shown once. - The string to be tested - The message to display in case of failure + The MessageWriter on which to display + The expected collection or array + The actual collection or array + The indentation level for the message line - + - Assert that a string is not empty - that is not equal to string.Empty - - The string to be tested - - - - Assert that an array, list or other collection is not empty + Displays a single line showing the point in the expected and actual + arrays at which the comparison failed. If the arrays have different + structures or dimensions, both _values are shown. - An array, list or other collection implementing ICollection - The message to display in case of failure - Array of objects to be used in formatting the message + The MessageWriter on which to display + The expected array + The actual array + Index of the failure point in the underlying collections + The indentation level for the message line - + - Assert that an array, list or other collection is not empty + Display the failure information for two IEnumerables that did not match. - An array, list or other collection implementing ICollection - The message to display in case of failure + The MessageWriter on which to display + The expected enumeration. + The actual enumeration + The depth of this failure in a set of nested collections - + - Assert that an array, list or other collection is not empty + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. - An array, list or other collection implementing ICollection - + - Assert that a string is either null or equal to string.Empty + Applies the constraint to an actual value, returning a ConstraintResult. - The string to be tested - The message to display in case of failure - Array of objects to be used in formatting the message + The value to be tested + A ConstraintResult - + - Assert that a string is either null or equal to string.Empty + FileExistsConstraint is used to determine if a file exists - The string to be tested - The message to display in case of failure - + - Assert that a string is either null or equal to string.Empty + Initializes a new instance of the class. - The string to be tested - + - Assert that a string is not null or empty + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. - The string to be tested - The message to display in case of failure - Array of objects to be used in formatting the message - + - Assert that a string is not null or empty + FileOrDirectoryExistsConstraint is used to determine if a file or directory exists - The string to be tested - The message to display in case of failure - + - Assert that a string is not null or empty + If true, the constraint will only check if files exist, not directories - The string to be tested - + - Asserts that an object may be assigned a value of a given Type. + If true, the constraint will only check if directories exist, not files - The expected Type. - The object under examination - The message to display in case of failure - Array of objects to be used in formatting the message - + - Asserts that an object may be assigned a value of a given Type. + Initializes a new instance of the class that + will check files and directories. - The expected Type. - The object under examination - The message to display in case of failure - + - Asserts that an object may be assigned a value of a given Type. + Initializes a new instance of the class that + will only check files if ignoreDirectories is true. - The expected Type. - The object under examination + if set to true [ignore directories]. - + - Asserts that an object may be assigned a value of a given Type. + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. - The expected Type. - The object under examination - The message to display in case of failure - Array of objects to be used in formatting the message - + - Asserts that an object may be assigned a value of a given Type. + Applies the constraint to an actual value, returning a ConstraintResult. - The expected Type. - The object under examination - The message to display in case of failure + The value to be tested + A ConstraintResult - + - Asserts that an object may be assigned a value of a given Type. + Interface for all constraints - The expected Type. - The object under examination - + - Asserts that an object may not be assigned a value of a given Type. + The display name of this Constraint for use by ToString(). - The expected Type. - The object under examination - The message to display in case of failure - Array of objects to be used in formatting the message - + - Asserts that an object may not be assigned a value of a given Type. + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. - The expected Type. - The object under examination - The message to display in case of failure - + - Asserts that an object may not be assigned a value of a given Type. + Arguments provided to this Constraint, for use in + formatting the description. - The expected Type. - The object under examination - + - Asserts that an object may not be assigned a value of a given Type. + The ConstraintBuilder holding this constraint - The expected Type. - The object under examination - The message to display in case of failure - Array of objects to be used in formatting the message - + - Asserts that an object may not be assigned a value of a given Type. + Applies the constraint to an actual value, returning a ConstraintResult. - The expected Type. - The object under examination - The message to display in case of failure + The value to be tested + A ConstraintResult - + - Asserts that an object may not be assigned a value of a given Type. + Applies the constraint to an ActualValueDelegate that returns + the value to be tested. The default implementation simply evaluates + the delegate but derived classes may override it to provide for + delayed processing. - The expected Type. - The object under examination + An ActualValueDelegate + A ConstraintResult - + - Asserts that an object is an instance of a given type. + Test whether the constraint is satisfied by a given reference. + The default implementation simply dereferences the value but + derived classes may override it to provide for delayed processing. - The expected Type - The object being examined - The message to display in case of failure - Array of objects to be used in formatting the message + A reference to the value to be tested + A ConstraintResult - + - Asserts that an object is an instance of a given type. + Represents a constraint that succeeds if all the + members of a collection match a base constraint. - The expected Type - The object being examined - The message to display in case of failure - + - Asserts that an object is an instance of a given type. + Returns a constraint that will apply the argument + to the members of a collection, succeeding if + they all succeed. - The expected Type - The object being examined - + - Asserts that an object is an instance of a given type. + Represents a constraint that succeeds if none of the + members of a collection match a base constraint. - The expected Type - The object being examined - The message to display in case of failure - Array of objects to be used in formatting the message - + - Asserts that an object is an instance of a given type. + Returns a constraint that will apply the argument + to the members of a collection, succeeding if + none of them succeed. - The expected Type - The object being examined - The message to display in case of failure - + - Asserts that an object is an instance of a given type. + Represents a constraint that succeeds if any of the + members of a collection match a base constraint. - The expected Type - The object being examined - + - Asserts that an object is an instance of a given type. + Returns a constraint that will apply the argument + to the members of a collection, succeeding if + any of them succeed. - The expected Type - The object being examined - The message to display in case of failure - Array of objects to be used in formatting the message - + - Asserts that an object is an instance of a given type. + SubPathConstraint tests that the actual path is under the expected path - The expected Type - The object being examined - The message to display in case of failure - + - Asserts that an object is an instance of a given type. + Initializes a new instance of the class. - The expected Type - The object being examined + The expected path - + - Asserts that an object is not an instance of a given type. + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. - The expected Type - The object being examined - The message to display in case of failure - Array of objects to be used in formatting the message - + - Asserts that an object is not an instance of a given type. + Test whether the constraint is satisfied by a given value - The expected Type - The object being examined - The message to display in case of failure + The value to be tested + True for success, false for failure - + - Asserts that an object is not an instance of a given type. + ThrowsExceptionConstraint tests that an exception has + been thrown, without any further tests. - The expected Type - The object being examined - + - Asserts that an object is not an instance of a given type. + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. - The expected Type - The object being examined - The message to display in case of failure - Array of objects to be used in formatting the message - + - Asserts that an object is not an instance of a given type. + Executes the code and returns success if an exception is thrown. - The expected Type - The object being examined - The message to display in case of failure + A delegate representing the code to be tested + True if an exception is thrown, otherwise false - + - Asserts that an object is not an instance of a given type. + Returns the ActualValueDelegate itself as the value to be tested. - The expected Type - The object being examined + A delegate representing the code to be tested + The delegate itself - + - Asserts that an object is not an instance of a given type. + AllItemsConstraint applies another constraint to each + item in a collection, succeeding if they all succeed. - The expected Type - The object being examined - The message to display in case of failure - Array of objects to be used in formatting the message - + - Asserts that an object is not an instance of a given type. + Construct an AllItemsConstraint on top of an existing constraint - The expected Type - The object being examined - The message to display in case of failure + - - - Asserts that an object is not an instance of a given type. + + + The display name of this Constraint for use by ToString(). + The default value is the name of the constraint with + trailing "Constraint" removed. Derived classes may set + this to another name in their constructors. - The expected Type - The object being examined - + - Verifies that the first value is greater than the second - value. If it is not, then an - is thrown. + Apply the item constraint to each item in the collection, + failing if any item fails. - The first value, expected to be greater - The second value, expected to be less - The message to display in case of failure - Array of objects to be used in formatting the message + + - + - Verifies that the first value is greater than the second - value. If it is not, then an - is thrown. + AndConstraint succeeds only if both members succeed. - The first value, expected to be greater - The second value, expected to be less - The message to display in case of failure - + - Verifies that the first value is greater than the second - value. If it is not, then an - is thrown. + Create an AndConstraint from two other constraints - The first value, expected to be greater - The second value, expected to be less + The first constraint + The second constraint - + - Verifies that the first value is greater than the second - value. If it is not, then an - is thrown. + Gets text describing a constraint - The first value, expected to be greater - The second value, expected to be less - The message to display in case of failure - Array of objects to be used in formatting the message - + - Verifies that the first value is greater than the second - value. If it is not, then an - is thrown. + Apply both member constraints to an actual value, succeeding + succeeding only if both of them succeed. - The first value, expected to be greater - The second value, expected to be less - The message to display in case of failure + The actual value + True if the constraints both succeeded - + - Verifies that the first value is greater than the second - value. If it is not, then an + Write the actual value for a failing constraint test to a + MessageWriter. The default implementation simply writes + the raw value of actual, leaving it to the writer to + perform any formatting. + + The writer on which the actual value is displayed + + + + AssignableFromConstraint is used to test that an object + can be assigned from a given Type. + + + + + Construct an AssignableFromConstraint for the type provided + + + + + + Apply the constraint to an actual value, returning true if it succeeds + + The actual argument + True if the constraint succeeds, otherwise false. + + + + AssignableToConstraint is used to test that an object + can be assigned to a given Type. + + + + + Construct an AssignableToConstraint for the type provided + + + + + + Apply the constraint to an actual value, returning true if it succeeds + + The actual argument + True if the constraint succeeds, otherwise false. + + + + AttributeConstraint tests that a specified attribute is present + on a Type or other provider and that the value of the attribute + satisfies some other constraint. + + + + + Constructs an AttributeConstraint for a specified attribute + Type and base constraint. + + + + + + + Determines whether the Type or other provider has the + expected attribute and if its value matches the + additional constraint specified. + + + + + Returns a string representation of the constraint. + + + + + AttributeExistsConstraint tests for the presence of a + specified attribute on a Type. + + + + + Constructs an AttributeExistsConstraint for a specific attribute Type + + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Tests whether the object provides the expected attribute. + + A Type, MethodInfo, or other ICustomAttributeProvider + True if the expected attribute is present, otherwise false + + + + BinaryConstraint is the abstract base of all constraints + that combine two other constraints in some fashion. + + + + + The first constraint being combined + + + + + The second constraint being combined + + + + + Construct a BinaryConstraint from two other constraints + + The first constraint + The second constraint + + + + BinarySerializableConstraint tests whether + an object is serializable in binary format. + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + Returns the string representation + + + + + CollectionConstraint is the abstract base class for + constraints that operate on collections. + + + + + Construct an empty CollectionConstraint + + + + + Construct a CollectionConstraint + + + + + + Determines whether the specified enumerable is empty. + + The enumerable. + + true if the specified enumerable is empty; otherwise, false. + + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + Protected method to be implemented by derived classes + + + + + + + CollectionContainsConstraint is used to test whether a collection + contains an expected object as a member. + + + + + Construct a CollectionContainsConstraint + + + + + + The display name of this Constraint for use by ToString(). + The default value is the name of the constraint with + trailing "Constraint" removed. Derived classes may set + this to another name in their constructors. + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Gets the expected object + + + + + Test whether the expected item is contained in the collection + + + + + + + Flag the constraint to use the supplied predicate function + + The comparison function to use. + Self. + + + + CollectionEquivalentConstraint is used to determine whether two + collections are equivalent. + + + + + Construct a CollectionEquivalentConstraint + + + + + + The display name of this Constraint for use by ToString(). + The default value is the name of the constraint with + trailing "Constraint" removed. Derived classes may set + this to another name in their constructors. + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Test whether two collections are equivalent + + + + + + + Flag the constraint to use the supplied predicate function + + The comparison function to use. + Self. + + + + CollectionItemsEqualConstraint is the abstract base class for all + collection constraints that apply some notion of item equality + as a part of their operation. + + + + + Construct an empty CollectionConstraint + + + + + Construct a CollectionConstraint + + + + + + Flag the constraint to ignore case and return self. + + + + + Flag the constraint to use the supplied IComparer object. + + The IComparer object to use. + Self. + + + + Flag the constraint to use the supplied IComparer object. + + The IComparer object to use. + Self. + + + + Flag the constraint to use the supplied Comparison object. + + The IComparer object to use. + Self. + + + + Flag the constraint to use the supplied IEqualityComparer object. + + The IComparer object to use. + Self. + + + + Flag the constraint to use the supplied IEqualityComparer object. + + The IComparer object to use. + Self. + + + + Compares two collection members for equality + + + + + Return a new CollectionTally for use in making tests + + The collection to be included in the tally + + + + CollectionOrderedConstraint is used to test whether a collection is ordered. + + + + + Construct a CollectionOrderedConstraint + + + + + The display name of this Constraint for use by ToString(). + The default value is the name of the constraint with + trailing "Constraint" removed. Derived classes may set + this to another name in their constructors. + + + + + If used performs a default ascending comparison + + + + + If used performs a reverse comparison + + + + + Modifies the constraint to use an and returns self. + + + + + Modifies the constraint to use an and returns self. + + + + + Modifies the constraint to use a and returns self. + + + + + Modifies the constraint to test ordering by the value of + a specified property and returns self. + + + + + Then signals a break between two ordering steps + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Test whether the collection is ordered + + + + + + + Returns the string representation of the constraint. + + + + + + An OrderingStep represents one stage of the sort + + + + + CollectionSubsetConstraint is used to determine whether + one collection is a subset of another + + + + + Construct a CollectionSubsetConstraint + + The collection that the actual value is expected to be a subset of + + + + The display name of this Constraint for use by ToString(). + The default value is the name of the constraint with + trailing "Constraint" removed. Derived classes may set + this to another name in their constructors. + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Test whether the actual collection is a subset of + the expected collection provided. + + + + + + + Flag the constraint to use the supplied predicate function + + The comparison function to use. + Self. + + + + CollectionTally counts (tallies) the number of + occurrences of each object in one or more enumerations. + + + + + Construct a CollectionTally object from a comparer and a collection + + + + + The number of objects remaining in the tally + + + + + Try to remove an object from the tally + + The object to remove + True if successful, false if the object was not found + + + + Try to remove a set of objects from the tally + + The objects to remove + True if successful, false if any object was not found + + + + ComparisonAdapter class centralizes all comparisons of + _values in NUnit, adapting to the use of any provided + , + or . + + + + + Gets the default ComparisonAdapter, which wraps an + NUnitComparer object. + + + + + Returns a ComparisonAdapter that wraps an + + + + + Returns a ComparisonAdapter that wraps an + + + + + Returns a ComparisonAdapter that wraps a + + + + + Compares two objects + + + + + Construct a default ComparisonAdapter + + + + + Construct a ComparisonAdapter for an + + + + + Compares two objects + + + + + + + + ComparerAdapter extends and + allows use of an or + to actually perform the comparison. + + + + + Construct a ComparisonAdapter for an + + + + + Compare a Type T to an object + + + + + Construct a ComparisonAdapter for a + + + + + Compare a Type T to an object + + + + + Abstract base class for constraints that compare _values to + determine if one is greater than, equal to or less than + the other. + + + + + The value against which a comparison is to be made + + + + + If true, less than returns success + + + + + if true, equal returns success + + + + + if true, greater than returns success + + + + + ComparisonAdapter to be used in making the comparison + + + + + Initializes a new instance of the class. + + The value against which to make a comparison. + if set to true less succeeds. + if set to true equal succeeds. + if set to true greater succeeds. + String used in describing the constraint. + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + Modifies the constraint to use an and returns self + + The comparer used for comparison tests + A constraint modified to use the given comparer + + + + Modifies the constraint to use an and returns self + + The comparer used for comparison tests + A constraint modified to use the given comparer + + + + Modifies the constraint to use a and returns self + + The comparer used for comparison tests + A constraint modified to use the given comparer + + + + Delegate used to delay evaluation of the actual value + to be used in evaluating a constraint + + + + + The Constraint class is the base of all built-in constraints + within NUnit. It provides the operator overloads used to combine + constraints. + + + + + Construct a constraint with optional arguments + + Arguments to be saved + + + + The display name of this Constraint for use by ToString(). + The default value is the name of the constraint with + trailing "Constraint" removed. Derived classes may set + this to another name in their constructors. + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Arguments provided to this Constraint, for use in + formatting the description. + + + + + The ConstraintBuilder holding this constraint + + + + + Applies the constraint to an actual value, returning a ConstraintResult. + + The value to be tested + A ConstraintResult + + + + Applies the constraint to an ActualValueDelegate that returns + the value to be tested. The default implementation simply evaluates + the delegate but derived classes may override it to provide for + delayed processing. + + An ActualValueDelegate + A ConstraintResult + + + + Test whether the constraint is satisfied by a given reference. + The default implementation simply dereferences the value but + derived classes may override it to provide for delayed processing. + + A reference to the value to be tested + A ConstraintResult + + + + Retrieves the value to be tested from an ActualValueDelegate. + The default implementation simply evaluates the delegate but derived + classes may override it to provide for delayed processing. + + An ActualValueDelegate + Delegate evaluation result + + + + Default override of ToString returns the constraint DisplayName + followed by any arguments within angle brackets. + + + + + + Returns the string representation of this constraint + + + + + This operator creates a constraint that is satisfied only if both + argument constraints are satisfied. + + + + + This operator creates a constraint that is satisfied if either + of the argument constraints is satisfied. + + + + + This operator creates a constraint that is satisfied if the + argument constraint is not satisfied. + + + + + Returns a ConstraintExpression by appending And + to the current constraint. + + + + + Returns a ConstraintExpression by appending And + to the current constraint. + + + + + Returns a ConstraintExpression by appending Or + to the current constraint. + + + + + Returns a DelayedConstraint with the specified delay time. + + The delay in milliseconds. + + + + + Returns a DelayedConstraint with the specified delay time + and polling interval. + + The delay in milliseconds. + The interval at which to test the constraint. + + + + + Resolves any pending operators and returns the resolved constraint. + + + + + ConstraintBuilder maintains the stacks that are used in + processing a ConstraintExpression. An OperatorStack + is used to hold operators that are waiting for their + operands to be reorganized. a ConstraintStack holds + input constraints as well as the results of each + operator applied. + + + + + OperatorStack is a type-safe stack for holding ConstraintOperators + + + + + Initializes a new instance of the class. + + The ConstraintBuilder using this stack. + + + + Gets a value indicating whether this is empty. + + true if empty; otherwise, false. + + + + Gets the topmost operator without modifying the stack. + + + + + Pushes the specified operator onto the stack. + + The operator to put onto the stack. + + + + Pops the topmost operator from the stack. + + The topmost operator on the stack + + + + ConstraintStack is a type-safe stack for holding Constraints + + + + + Initializes a new instance of the class. + + The ConstraintBuilder using this stack. + + + + Gets a value indicating whether this is empty. + + true if empty; otherwise, false. + + + + Pushes the specified constraint. As a side effect, + the constraint's Builder field is set to the + ConstraintBuilder owning this stack. + + The constraint to put onto the stack + + + + Pops this topmost constraint from the stack. + As a side effect, the constraint's Builder + field is set to null. + + The topmost contraint on the stack + + + + Initializes a new instance of the class. + + + + + Appends the specified operator to the expression by first + reducing the operator stack and then pushing the new + operator on the stack. + + The operator to push. + + + + Appends the specified constraint to the expression by pushing + it on the constraint stack. + + The constraint to push. + + + + Sets the top operator right context. + + The right context. + + + + Reduces the operator stack until the topmost item + precedence is greater than or equal to the target precedence. + + The target precedence. + + + + Resolves this instance, returning a Constraint. If the Builder + is not currently in a resolvable state, an exception is thrown. + + The resolved constraint + + + + Gets a value indicating whether this instance is resolvable. + + + true if this instance is resolvable; otherwise, false. + + + + + ConstraintExpression represents a compound constraint in the + process of being constructed from a series of syntactic elements. + + Individual elements are appended to the expression as they are + reorganized. When a constraint is appended, it is returned as the + value of the operation so that modifiers may be applied. However, + any partially built expression is attached to the constraint for + later resolution. When an operator is appended, the partial + expression is returned. If it's a self-resolving operator, then + a ResolvableConstraintExpression is returned. + + + + + The ConstraintBuilder holding the elements recognized so far + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the + class passing in a ConstraintBuilder, which may be pre-populated. + + The builder. + + + + Returns a string representation of the expression as it + currently stands. This should only be used for testing, + since it has the side-effect of resolving the expression. + + + + + + Appends an operator to the expression and returns the + resulting expression itself. + + + + + Appends a self-resolving operator to the expression and + returns a new ResolvableConstraintExpression. + + + + + Appends a constraint to the expression and returns that + constraint, which is associated with the current state + of the expression being built. Note that the constraint + is not reduced at this time. For example, if there + is a NotOperator on the stack we don't reduce and + return a NotConstraint. The original constraint must + be returned because it may support modifiers that + are yet to be applied. + + + + + Returns a ConstraintExpression that negates any + following constraint. + + + + + Returns a ConstraintExpression that negates any + following constraint. + + + + + Returns a ConstraintExpression, which will apply + the following constraint to all members of a collection, + succeeding if all of them succeed. + + + + + Returns a ConstraintExpression, which will apply + the following constraint to all members of a collection, + succeeding if at least one of them succeeds. + + + + + Returns a ConstraintExpression, which will apply + the following constraint to all members of a collection, + succeeding if all of them fail. + + + + + Returns a ConstraintExpression, which will apply + the following constraint to all members of a collection, + succeeding only if a specified number of them succeed. + + + + + Returns a new PropertyConstraintExpression, which will either + test for the existence of the named property on the object + being tested or apply any following constraint to that property. + + + + + Returns a new ConstraintExpression, which will apply the following + constraint to the Length property of the object being tested. + + + + + Returns a new ConstraintExpression, which will apply the following + constraint to the Count property of the object being tested. + + + + + Returns a new ConstraintExpression, which will apply the following + constraint to the Message property of the object being tested. + + + + + Returns a new ConstraintExpression, which will apply the following + constraint to the InnerException property of the object being tested. + + + + + Returns a new AttributeConstraint checking for the + presence of a particular attribute on an object. + + + + + Returns a new AttributeConstraint checking for the + presence of a particular attribute on an object. + + + + + With is currently a NOP - reserved for future use. + + + + + Returns the constraint provided as an argument - used to allow custom + custom constraints to easily participate in the syntax. + + + + + Returns the constraint provided as an argument - used to allow custom + custom constraints to easily participate in the syntax. + + + + + Returns a constraint that tests for null + + + + + Returns a constraint that tests for True + + + + + Returns a constraint that tests for False + + + + + Returns a constraint that tests for a positive value + + + + + Returns a constraint that tests for a negative value + + + + + Returns a constraint that tests if item is equal to zero + + + + + Returns a constraint that tests for NaN + + + + + Returns a constraint that tests for empty + + + + + Returns a constraint that tests whether a collection + contains all unique items. + + + + + Returns a constraint that tests whether an object graph is serializable in binary format. + + + + + Returns a constraint that tests whether an object graph is serializable in xml format. + + + + + Returns a constraint that tests two items for equality + + + + + Returns a constraint that tests that two references are the same object + + + + + Returns a constraint that tests whether the + actual value is greater than the supplied argument + + + + + Returns a constraint that tests whether the + actual value is greater than or equal to the supplied argument + + + + + Returns a constraint that tests whether the + actual value is greater than or equal to the supplied argument + + + + + Returns a constraint that tests whether the + actual value is less than the supplied argument + + + + + Returns a constraint that tests whether the + actual value is less than or equal to the supplied argument + + + + + Returns a constraint that tests whether the + actual value is less than or equal to the supplied argument + + + + + Returns a constraint that tests whether the actual + value is of the exact type supplied as an argument. + + + + + Returns a constraint that tests whether the actual + value is of the exact type supplied as an argument. + + + + + Returns a constraint that tests whether the actual value + is of the type supplied as an argument or a derived type. + + + + + Returns a constraint that tests whether the actual value + is of the type supplied as an argument or a derived type. + + + + + Returns a constraint that tests whether the actual value + is assignable from the type supplied as an argument. + + + + + Returns a constraint that tests whether the actual value + is assignable from the type supplied as an argument. + + + + + Returns a constraint that tests whether the actual value + is assignable from the type supplied as an argument. + + + + + Returns a constraint that tests whether the actual value + is assignable from the type supplied as an argument. + + + + + Returns a constraint that tests whether the actual value + is a collection containing the same elements as the + collection supplied as an argument. + + + + + Returns a constraint that tests whether the actual value + is a subset of the collection supplied as an argument. + + + + + Returns a constraint that tests whether the actual value + is a superset of the collection supplied as an argument. + + + + + Returns a constraint that tests whether a collection is ordered + + + + + Returns a new CollectionContainsConstraint checking for the + presence of a particular object in the collection. + + + + + Returns a new CollectionContainsConstraint checking for the + presence of a particular object in the collection. + + + + + Returns a new ContainsConstraint. This constraint + will, in turn, make use of the appropriate second-level + constraint, depending on the type of the actual argument. + This overload is only used if the item sought is a string, + since any other type implies that we are looking for a + collection member. + + + + + Returns a new ContainsConstraint. This constraint + will, in turn, make use of the appropriate second-level + constraint, depending on the type of the actual argument. + This overload is only used if the item sought is a string, + since any other type implies that we are looking for a + collection member. + + + + + Returns a constraint that succeeds if the actual + value contains the substring supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value contains the substring supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value starts with the substring supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value starts with the substring supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value starts with the substring supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value ends with the substring supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value ends with the substring supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value ends with the substring supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value matches the regular expression supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value matches the regular expression supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value matches the regular expression supplied as an argument. + + + + + Returns a constraint that tests whether the path provided + is the same as an expected path after canonicalization. + + + + + Returns a constraint that tests whether the path provided + is the a subpath of the expected path after canonicalization. + + + + + Returns a constraint that tests whether the path provided + is the same path or under an expected path after canonicalization. + + + + + Returns a constraint that tests whether the actual value falls + within a specified range. + + + + + Returns a constraint that succeeds if the value + is a file or directory and it exists. + + + + + Helper class with properties and methods that supply + a number of constraints used in Asserts. + + + + + Returns a ConstraintExpression that negates any + following constraint. + + + + + Returns a ConstraintExpression that negates any + following constraint. + + + + + Returns a ConstraintExpression, which will apply + the following constraint to all members of a collection, + succeeding if all of them succeed. + + + + + Returns a ConstraintExpression, which will apply + the following constraint to all members of a collection, + succeeding if at least one of them succeeds. + + + + + Returns a ConstraintExpression, which will apply + the following constraint to all members of a collection, + succeeding if all of them fail. + + + + + Returns a ConstraintExpression, which will apply + the following constraint to all members of a collection, + succeeding only if a specified number of them succeed. + + + + + Returns a new PropertyConstraintExpression, which will either + test for the existence of the named property on the object + being tested or apply any following constraint to that property. + + + + + Returns a new ConstraintExpression, which will apply the following + constraint to the Length property of the object being tested. + + + + + Returns a new ConstraintExpression, which will apply the following + constraint to the Count property of the object being tested. + + + + + Returns a new ConstraintExpression, which will apply the following + constraint to the Message property of the object being tested. + + + + + Returns a new ConstraintExpression, which will apply the following + constraint to the InnerException property of the object being tested. + + + + + Returns a new AttributeConstraint checking for the + presence of a particular attribute on an object. + + + + + Returns a new AttributeConstraint checking for the + presence of a particular attribute on an object. + + + + + Returns a constraint that tests for null + + + + + Returns a constraint that tests for True + + + + + Returns a constraint that tests for False + + + + + Returns a constraint that tests for a positive value + + + + + Returns a constraint that tests for a negative value + + + + + Returns a constraint that tests for equality with zero + + + + + Returns a constraint that tests for NaN + + + + + Returns a constraint that tests for empty + + + + + Returns a constraint that tests whether a collection + contains all unique items. + + + + + Returns a constraint that tests whether an object graph is serializable in binary format. + + + + + Returns a constraint that tests whether an object graph is serializable in xml format. + + + + + Returns a constraint that tests two items for equality + + + + + Returns a constraint that tests that two references are the same object + + + + + Returns a constraint that tests whether the + actual value is greater than the supplied argument + + + + + Returns a constraint that tests whether the + actual value is greater than or equal to the supplied argument + + + + + Returns a constraint that tests whether the + actual value is greater than or equal to the supplied argument + + + + + Returns a constraint that tests whether the + actual value is less than the supplied argument + + + + + Returns a constraint that tests whether the + actual value is less than or equal to the supplied argument + + + + + Returns a constraint that tests whether the + actual value is less than or equal to the supplied argument + + + + + Returns a constraint that tests whether the actual + value is of the exact type supplied as an argument. + + + + + Returns a constraint that tests whether the actual + value is of the exact type supplied as an argument. + + + + + Returns a constraint that tests whether the actual value + is of the type supplied as an argument or a derived type. + + + + + Returns a constraint that tests whether the actual value + is of the type supplied as an argument or a derived type. + + + + + Returns a constraint that tests whether the actual value + is assignable from the type supplied as an argument. + + + + + Returns a constraint that tests whether the actual value + is assignable from the type supplied as an argument. + + + + + Returns a constraint that tests whether the actual value + is assignable from the type supplied as an argument. + + + + + Returns a constraint that tests whether the actual value + is assignable from the type supplied as an argument. + + + + + Returns a constraint that tests whether the actual value + is a collection containing the same elements as the + collection supplied as an argument. + + + + + Returns a constraint that tests whether the actual value + is a subset of the collection supplied as an argument. + + + + + Returns a constraint that tests whether the actual value + is a superset of the collection supplied as an argument. + + + + + Returns a constraint that tests whether a collection is ordered + + + + + Returns a new CollectionContainsConstraint checking for the + presence of a particular object in the collection. + + + + + Returns a new CollectionContainsConstraint checking for the + presence of a particular object in the collection. + + + + + Returns a new ContainsConstraint. This constraint + will, in turn, make use of the appropriate second-level + constraint, depending on the type of the actual argument. + This overload is only used if the item sought is a string, + since any other type implies that we are looking for a + collection member. + + + + + Returns a constraint that succeeds if the actual + value contains the substring supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value contains the substring supplied as an argument. + + + + + Returns a constraint that fails if the actual + value contains the substring supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value starts with the substring supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value starts with the substring supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value starts with the substring supplied as an argument. + + + + + Returns a constraint that fails if the actual + value starts with the substring supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value ends with the substring supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value ends with the substring supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value ends with the substring supplied as an argument. + + + + + Returns a constraint that fails if the actual + value ends with the substring supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value matches the regular expression supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value matches the regular expression supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value matches the regular expression supplied as an argument. + + + + + Returns a constraint that fails if the actual + value matches the pattern supplied as an argument. + + + + + Returns a constraint that tests whether the path provided + is the same as an expected path after canonicalization. + + + + + Returns a constraint that tests whether the path provided + is a subpath of the expected path after canonicalization. + + + + + Returns a constraint that tests whether the path provided + is the same path or under an expected path after canonicalization. + + + + + Returns a constraint that tests whether the actual value falls + within a specified range. + + + + + ContainsConstraint tests a whether a string contains a substring + or a collection contains an object. It postpones the decision of + which test to use until the type of the actual argument is known. + This allows testing whether a string is contained in a collection + or as a substring of another string using the same syntax. + + + + + Initializes a new instance of the class. + + The _expected. + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Flag the constraint to ignore case and return self. + + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + Applies a delay to the match so that a match can be evaluated in the future. + + + + + Creates a new DelayedConstraint + + The inner constraint to decorate + The time interval after which the match is performed + If the value of is less than 0 + + + + Creates a new DelayedConstraint + + The inner constraint to decorate + The time interval after which the match is performed, in milliseconds + The time interval used for polling, in milliseconds + If the value of is less than 0 + + + + Gets text describing a constraint + + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for if the base constraint fails, false if it succeeds + + + + Test whether the constraint is satisfied by a delegate + + The delegate whose value is to be tested + A ConstraintResult + + + + Test whether the constraint is satisfied by a given reference. + Overridden to wait for the specified delay period before + calling the base constraint with the dereferenced value. + + A reference to the value to be tested + True for success, false for failure + + + + Returns the string representation of the constraint. + + + + + Adjusts a Timestamp by a given TimeSpan + + + + + + + + Returns the difference between two Timestamps as a TimeSpan + + + + + + + + DictionaryContainsKeyConstraint is used to test whether a dictionary + contains an expected object as a key. + + + + + Construct a DictionaryContainsKeyConstraint + + + + + + The display name of this Constraint for use by ToString(). + The default value is the name of the constraint with + trailing "Constraint" removed. Derived classes may set + this to another name in their constructors. + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Test whether the expected key is contained in the dictionary + + + + + EmptyCollectionConstraint tests whether a collection is empty. + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Check that the collection is empty + + + + + + + EmptyConstraint tests a whether a string or collection is empty, + postponing the decision about which test is applied until the + type of the actual argument is known. + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + EmptyDirectoryConstraint is used to test that a directory is empty + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + EmptyStringConstraint tests whether a string is empty. + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + EndsWithConstraint can test whether a string ends + with an expected substring. + + + + + Initializes a new instance of the class. + + The expected string + + + + Test whether the constraint is matched by the actual value. + This is a template method, which calls the IsMatch method + of the derived class. + + + + + + + EqualConstraint is able to compare an actual value with the + expected value provided in its constructor. Two objects are + considered equal if both are null, or if both have the same + value. NUnit has special semantics for some object types. + + + + + NUnitEqualityComparer used to test equality. + + + + + Initializes a new instance of the class. + + The expected value. + + + + Gets the tolerance for this comparison. + + + The tolerance. + + + + + Gets a value indicating whether to compare case insensitive. + + + true if comparing case insensitive; otherwise, false. + + + + + Gets a value indicating whether or not to clip strings. + + + true if set to clip strings otherwise, false. + + + + + Gets the failure points. + + + The failure points. + + + + + Flag the constraint to ignore case and return self. + + + + + Flag the constraint to suppress string clipping + and return self. + + + + + Flag the constraint to compare arrays as collections + and return self. + + + + + Flag the constraint to use a tolerance when determining equality. + + Tolerance value to be used + Self. + + + + Flags the constraint to include + property in comparison of two values. + + + Using this modifier does not allow to use the + constraint modifier. + + + + + Switches the .Within() modifier to interpret its tolerance as + a distance in representable _values (see remarks). + + Self. + + Ulp stands for "unit in the last place" and describes the minimum + amount a given value can change. For any integers, an ulp is 1 whole + digit. For floating point _values, the accuracy of which is better + for smaller numbers and worse for larger numbers, an ulp depends + on the size of the number. Using ulps for comparison of floating + point results instead of fixed tolerances is safer because it will + automatically compensate for the added inaccuracy of larger numbers. + + + + + Switches the .Within() modifier to interpret its tolerance as + a percentage that the actual _values is allowed to deviate from + the expected value. + + Self + + + + Causes the tolerance to be interpreted as a TimeSpan in days. + + Self + + + + Causes the tolerance to be interpreted as a TimeSpan in hours. + + Self + + + + Causes the tolerance to be interpreted as a TimeSpan in minutes. + + Self + + + + Causes the tolerance to be interpreted as a TimeSpan in seconds. + + Self + + + + Causes the tolerance to be interpreted as a TimeSpan in milliseconds. + + Self + + + + Causes the tolerance to be interpreted as a TimeSpan in clock ticks. + + Self + + + + Flag the constraint to use the supplied IComparer object. + + The IComparer object to use. + Self. + + + + Flag the constraint to use the supplied IComparer object. + + The IComparer object to use. + Self. + + + + Flag the constraint to use the supplied Comparison object. + + The IComparer object to use. + Self. + + + + Flag the constraint to use the supplied IEqualityComparer object. + + The IComparer object to use. + Self. + + + + Flag the constraint to use the supplied IEqualityComparer object. + + The IComparer object to use. + Self. + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + EqualityAdapter class handles all equality comparisons + that use an , + or a . + + + + + Compares two objects, returning true if they are equal + + + + + Returns true if the two objects can be compared by this adapter. + The base adapter cannot handle IEnumerables except for strings. + + + + + Returns an that wraps an . + + + + + that wraps an . + + + + + Returns an that wraps an . + + + + + Returns an EqualityAdapter that uses a predicate function for items comparison. + + + + + + + + + Returns true if the two objects can be compared by this adapter. + The base adapter cannot handle IEnumerables except for strings. + + + + + Compares two objects, returning true if they are equal + + + + + Returns true if the two objects can be compared by this adapter. + Generic adapter requires objects of the specified type. + + + + + Returns an that wraps an . + + + + + Returns an that wraps an . + + + + + that wraps an . + + + + + Returns an that wraps a . + + + + + ExactTypeConstraint is used to test that an object + is of the exact type provided in the constructor + + + + + Construct an ExactTypeConstraint for a given Type + + The expected Type. + + + + The display name of this Constraint for use by ToString(). + The default value is the name of the constraint with + trailing "Constraint" removed. Derived classes may set + this to another name in their constructors. + + + + + Apply the constraint to an actual value, returning true if it succeeds + + The actual argument + True if the constraint succeeds, otherwise false. + + + + FalseConstraint tests that the actual value is false + + + + + Initializes a new instance of the class. + + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + Helper routines for working with floating point numbers + + + The floating point comparison code is based on this excellent article: + http://www.cygnus-software.com/papers/comparingfloats/comparingfloats.htm + + + "ULP" means Unit in the Last Place and in the context of this library refers to + the distance between two adjacent floating point numbers. IEEE floating point + numbers can only represent a finite subset of natural numbers, with greater + accuracy for smaller numbers and lower accuracy for very large numbers. + + + If a comparison is allowed "2 ulps" of deviation, that means the _values are + allowed to deviate by up to 2 adjacent floating point _values, which might be + as low as 0.0000001 for small numbers or as high as 10.0 for large numbers. + + + + + Union of a floating point variable and an integer + + + The union's value as a floating point variable + + + The union's value as an integer + + + The union's value as an unsigned integer + + + Union of a double precision floating point variable and a long + + + The union's value as a double precision floating point variable + + + The union's value as a long + + + The union's value as an unsigned long + + + Compares two floating point _values for equality + First floating point value to be compared + Second floating point value t be compared + + Maximum number of representable floating point _values that are allowed to + be between the left and the right floating point _values + + True if both numbers are equal or close to being equal + + + Floating point _values can only represent a finite subset of natural numbers. + For example, the _values 2.00000000 and 2.00000024 can be stored in a float, + but nothing inbetween them. + + + This comparison will count how many possible floating point _values are between + the left and the right number. If the number of possible _values between both + numbers is less than or equal to maxUlps, then the numbers are considered as + being equal. + + + Implementation partially follows the code outlined here: + http://www.anttirt.net/2007/08/19/proper-floating-point-comparisons/ + + + + + Compares two double precision floating point _values for equality + First double precision floating point value to be compared + Second double precision floating point value t be compared + + Maximum number of representable double precision floating point _values that are + allowed to be between the left and the right double precision floating point _values + + True if both numbers are equal or close to being equal + + + Double precision floating point _values can only represent a limited series of + natural numbers. For example, the _values 2.0000000000000000 and 2.0000000000000004 + can be stored in a double, but nothing inbetween them. + + + This comparison will count how many possible double precision floating point + _values are between the left and the right number. If the number of possible + _values between both numbers is less than or equal to maxUlps, then the numbers + are considered as being equal. + + + Implementation partially follows the code outlined here: + http://www.anttirt.net/2007/08/19/proper-floating-point-comparisons/ + + + + + + Reinterprets the memory contents of a floating point value as an integer value + + + Floating point value whose memory contents to reinterpret + + + The memory contents of the floating point value interpreted as an integer + + + + + Reinterprets the memory contents of a double precision floating point + value as an integer value + + + Double precision floating point value whose memory contents to reinterpret + + + The memory contents of the double precision floating point value + interpreted as an integer + + + + + Reinterprets the memory contents of an integer as a floating point value + + Integer value whose memory contents to reinterpret + + The memory contents of the integer value interpreted as a floating point value + + + + + Reinterprets the memory contents of an integer value as a double precision + floating point value + + Integer whose memory contents to reinterpret + + The memory contents of the integer interpreted as a double precision + floating point value + + + + + Tests whether a value is greater than the value supplied to its constructor + + + + + Initializes a new instance of the class. + + The expected value. + + + + Tests whether a value is greater than or equal to the value supplied to its constructor + + + + + Initializes a new instance of the class. + + The expected value. + + + + ConstraintStatus represents the status of a ConstraintResult + returned by a Constraint being applied to an actual value. + + + + + The status has not yet been set + + + + + The constraint succeeded + + + + + The constraint failed + + + + + An error occured in applying the constraint (reserved for future use) + + + + + Contain the result of matching a against an actual value. + + + + + Constructs a for a particular . + + The Constraint to which this result applies. + The actual value to which the Constraint was applied. + + + + Constructs a for a particular . + + The Constraint to which this result applies. + The actual value to which the Constraint was applied. + The status of the new ConstraintResult. + + + + Constructs a for a particular . + + The Constraint to which this result applies. + The actual value to which the Constraint was applied. + If true, applies a status of Success to the result, otherwise Failure. + + + + The actual value that was passed to the method. + + + + + Gets and sets the ResultStatus for this result. + + + + + True if actual value meets the Constraint criteria otherwise false. + + + + + Display friendly name of the constraint. + + + + + Description of the constraint may be affected by the state the constraint had + when was performed against the actual value. + + + + + Write the failure message to the MessageWriter provided + as an argument. The default implementation simply passes + the result and the actual value to the writer, which + then displays the constraint description and the value. + + Constraints that need to provide additional details, + such as where the error occured can override this. + + The MessageWriter on which to display the message + + + + Write the actual value for a failing constraint test to a + MessageWriter. The default implementation simply writes + the raw value of actual, leaving it to the writer to + perform any formatting. + + The writer on which the actual value is displayed + + + + InstanceOfTypeConstraint is used to test that an object + is of the same type provided or derived from it. + + + + + Construct an InstanceOfTypeConstraint for the type provided + + The expected Type + + + + The display name of this Constraint for use by ToString(). + The default value is the name of the constraint with + trailing "Constraint" removed. Derived classes may set + this to another name in their constructors. + + + + + Apply the constraint to an actual value, returning true if it succeeds + + The actual argument + True if the constraint succeeds, otherwise false. + + + + The IResolveConstraint interface is implemented by all + complete and resolvable constraints and expressions. + + + + + Return the top-level constraint for this expression + + + + + + Tests whether a value is less than the value supplied to its constructor + + + + + Initializes a new instance of the class. + + The expected value. + + + + Tests whether a value is less than or equal to the value supplied to its constructor + + + + + Initializes a new instance of the class. + + The expected value. + + + + MessageWriter is the abstract base for classes that write + constraint descriptions and messages in some form. The + class has separate methods for writing various components + of a message, allowing implementations to tailor the + presentation as needed. + + + + + Construct a MessageWriter given a culture + + + + + Abstract method to get the max line length + + + + + Method to write single line message with optional args, usually + written to precede the general failure message. + + The message to be written + Any arguments used in formatting the message + + + + Method to write single line message with optional args, usually + written to precede the general failure message, at a givel + indentation level. + + The indentation level of the message + The message to be written + Any arguments used in formatting the message + + + + Display Expected and Actual lines for a constraint. This + is called by MessageWriter's default implementation of + WriteMessageTo and provides the generic two-line display. + + The failing constraint result + + + + Display Expected and Actual lines for given _values. This + method may be called by constraints that need more control over + the display of actual and expected _values than is provided + by the default implementation. + + The expected value + The actual value causing the failure + + + + Display Expected and Actual lines for given _values, including + a tolerance value on the Expected line. + + The expected value + The actual value causing the failure + The tolerance within which the test was made + + + + Display the expected and actual string _values on separate lines. + If the mismatch parameter is >=0, an additional line is displayed + line containing a caret that points to the mismatch point. + + The expected string value + The actual string value + The point at which the strings don't match or -1 + If true, case is ignored in locating the point where the strings differ + If true, the strings should be clipped to fit the line + + + + Writes the text for an actual value. + + The actual value. + + + + Writes the text for a generalized value. + + The value. + + + + Writes the text for a collection value, + starting at a particular point, to a max length + + The collection containing elements to write. + The starting point of the elements to write + The maximum number of elements to write + + + + Custom value formatter function + + The value + + + + + Custom value formatter factory function + + The next formatter function + ValueFormatter + If the given formatter is unable to handle a certain format, it must call the next formatter in the chain + + + + Static methods used in creating messages + + + + + Static string used when strings are clipped + + + + + Formatting strings used for expected and actual _values + + + + + Current head of chain of value formatters. Public for testing. + + + + + Add a formatter to the chain of responsibility. + + + + + + Formats text to represent a generalized value. + + The value + The formatted text + + + + Formats text for a collection value, + starting at a particular point, to a max length + + The collection containing elements to write. + The starting point of the elements to write + The maximum number of elements to write + + + + Returns the representation of a type as used in NUnitLite. + This is the same as Type.ToString() except for arrays, + which are displayed with their declared sizes. + + + + + + + Converts any control characters in a string + to their escaped representation. + + The string to be converted + The converted string + + + + Converts any null characters in a string + to their escaped representation. + + The string to be converted + The converted string + + + + Return the a string representation for a set of indices into an array + + Array of indices for which a string is needed + + + + Get an array of indices representing the point in a collection or + array corresponding to a single int index into the collection. + + The collection to which the indices apply + Index in the collection + Array of indices + + + + Clip a string to a given length, starting at a particular offset, returning the clipped + string with ellipses representing the removed parts + + The string to be clipped + The maximum permitted length of the result string + The point at which to start clipping + The clipped string + + + + Clip the expected and actual strings in a coordinated fashion, + so that they may be displayed together. + + + + + + + + + Shows the position two strings start to differ. Comparison + starts at the start index. + + The expected string + The actual string + The index in the strings at which comparison should start + Boolean indicating whether case should be ignored + -1 if no mismatch found, or the index where mismatch found + + + + NaNConstraint tests that the actual value is a double or float NaN + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Test that the actual value is an NaN + + + + + + + NoItemConstraint applies another constraint to each + item in a collection, failing if any of them succeeds. + + + + + Construct a SomeItemsConstraint on top of an existing constraint + + + + + + The display name of this Constraint for use by ToString(). + The default value is the name of the constraint with + trailing "Constraint" removed. Derived classes may set + this to another name in their constructors. + + + + + Apply the item constraint to each item in the collection, + failing if any item fails. + + + + + + + NotConstraint negates the effect of some other constraint + + + + + Initializes a new instance of the class. + + The base constraint to be negated. + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for if the base constraint fails, false if it succeeds + + + + NullConstraint tests that the actual value is null + + + + + Initializes a new instance of the class. + + + + + Applies the constraint to an actual value, returning a ConstraintResult. + + The value to be tested + A ConstraintResult + + + + The Numerics class contains common operations on numeric _values. + + + + + Checks the type of the object, returning true if + the object is a numeric type. + + The object to check + true if the object is a numeric type + + + + Checks the type of the object, returning true if + the object is a floating point numeric type. + + The object to check + true if the object is a floating point numeric type + + + + Checks the type of the object, returning true if + the object is a fixed point numeric type. + + The object to check + true if the object is a fixed point numeric type + + + + Test two numeric _values for equality, performing the usual numeric + conversions and using a provided or default tolerance. If the tolerance + provided is Empty, this method may set it to a default tolerance. + + The expected value + The actual value + A reference to the tolerance in effect + True if the _values are equal + + + + Compare two numeric _values, performing the usual numeric conversions. + + The expected value + The actual value + The relationship of the _values to each other + + + + NUnitComparer encapsulates NUnit's default behavior + in comparing two objects. + + + + + Returns the default NUnitComparer. + + + + + Compares two objects + + + + + + + + NUnitEqualityComparer encapsulates NUnit's handling of + equality tests between objects. + + + + + If true, all string comparisons will ignore case + + + + + If true, arrays will be treated as collections, allowing + those of different dimensions to be compared + + + + + Comparison objects used in comparisons for some constraints. + + + + + List of points at which a failure occurred. + + + + + Returns the default NUnitEqualityComparer + + + + + Gets and sets a flag indicating whether case should + be ignored in determining equality. + + + + + Gets and sets a flag indicating that arrays should be + compared as collections, without regard to their shape. + + + + + Gets the list of external comparers to be used to + test for equality. They are applied to members of + collections, in place of NUnit's own logic. + + + + + Gets the list of failure points for the last Match performed. + The list consists of objects to be interpreted by the caller. + This generally means that the caller may only make use of + objects it has placed on the list at a particular depthy. + + + + + Flags the comparer to include + property in comparison of two values. + + + Using this modifier does not allow to use the + modifier. + + + + + Compares two objects for equality within a tolerance. + + + + + Helper method to compare two arrays + + + + + Method to compare two DirectoryInfo objects + + first directory to compare + second directory to compare + true if equivalent, false if not + + + + FailurePoint class represents one point of failure + in an equality test. + + + + + The location of the failure + + + + + The expected value + + + + + The actual value + + + + + Indicates whether the expected value is valid + + + + + Indicates whether the actual value is valid + + + + + Operator that requires both it's arguments to succeed + + + + + Construct an AndOperator + + + + + Apply the operator to produce an AndConstraint + + + + + Operator that tests for the presence of a particular attribute + on a type and optionally applies further tests to the attribute. + + + + + Construct an AttributeOperator for a particular Type + + The Type of attribute tested + + + + Reduce produces a constraint from the operator and + any arguments. It takes the arguments from the constraint + stack and pushes the resulting constraint on it. + + + + + Abstract base class for all binary operators + + + + + Reduce produces a constraint from the operator and + any arguments. It takes the arguments from the constraint + stack and pushes the resulting constraint on it. + + + + + + Gets the left precedence of the operator + + + + + Gets the right precedence of the operator + + + + + Abstract method that produces a constraint by applying + the operator to its left and right constraint arguments. + + + + + Abstract base for operators that indicate how to + apply a constraint to items in a collection. + + + + + Constructs a CollectionOperator + + + + + The ConstraintOperator class is used internally by a + ConstraintBuilder to represent an operator that + modifies or combines constraints. + + Constraint operators use left and right precedence + _values to determine whether the top operator on the + stack should be reduced before pushing a new operator. + + + + + The precedence value used when the operator + is about to be pushed to the stack. + + + + + The precedence value used when the operator + is on the top of the stack. + + + + + The syntax element preceding this operator + + + + + The syntax element following this operator + + + + + The precedence value used when the operator + is about to be pushed to the stack. + + + + + The precedence value used when the operator + is on the top of the stack. + + + + + Reduce produces a constraint from the operator and + any arguments. It takes the arguments from the constraint + stack and pushes the resulting constraint on it. + + + + + + Negates the test of the constraint it wraps. + + + + + Constructs a new NotOperator + + + + + Returns a NotConstraint applied to its argument. + + + + + Operator that requires at least one of it's arguments to succeed + + + + + Construct an OrOperator + + + + + Apply the operator to produce an OrConstraint + + + + + PrefixOperator takes a single constraint and modifies + it's action in some way. + + + + + Reduce produces a constraint from the operator and + any arguments. It takes the arguments from the constraint + stack and pushes the resulting constraint on it. + + + + + + Returns the constraint created by applying this + prefix to another constraint. + + + + + + + Operator used to test for the presence of a named Property + on an object and optionally apply further tests to the + value of that property. + + + + + Gets the name of the property to which the operator applies + + + + + Constructs a PropOperator for a particular named property + + + + + Reduce produces a constraint from the operator and + any arguments. It takes the arguments from the constraint + stack and pushes the resulting constraint on it. + + + + + + Abstract base class for operators that are able to reduce to a + constraint whether or not another syntactic element follows. + + + + + Operator that tests that an exception is thrown and + optionally applies further tests to the exception. + + + + + Construct a ThrowsOperator + + + + + Reduce produces a constraint from the operator and + any arguments. It takes the arguments from the constraint + stack and pushes the resulting constraint on it. + + + + + Represents a constraint that simply wraps the + constraint provided as an argument, without any + further functionality, but which modifies the + order of evaluation because of its precedence. + + + + + Constructor for the WithOperator + + + + + Returns a constraint that wraps its argument + + + + + OrConstraint succeeds if either member succeeds + + + + + Create an OrConstraint from two other constraints + + The first constraint + The second constraint + + + + Gets text describing a constraint + + + + + Apply the member constraints to an actual value, succeeding + succeeding as soon as one of them succeeds. + + The actual value + True if either constraint succeeded + + + + PathConstraint serves as the abstract base of constraints + that operate on paths and provides several helper methods. + + + + + Construct a PathConstraint for a give expected path + + The expected path + + + + Modifies the current instance to be case-sensitive + and returns it. + + + + + Returns the string representation of this constraint + + + + + Canonicalize the provided path + + + The path in standardized form + + + + Test whether one path in canonical form is a subpath of another path + + The first path - supposed to be the parent path + The second path - supposed to be the child path + + + + + Predicate constraint wraps a Predicate in a constraint, + returning success if the predicate is true. + + + + + Construct a PredicateConstraint from a predicate + + + + + Gets text describing a constraint + + + + + Determines whether the predicate succeeds when applied + to the actual value. + + + + + Abstract base class used for prefixes + + + + + The base constraint + + + + + Prefix used in forming the constraint description + + + + + Construct given a base constraint + + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + PropertyConstraint extracts a named property and uses + its value as the actual value for a chained constraint. + + + + + Initializes a new instance of the class. + + The name. + The constraint to apply to the property. + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + Returns the string representation of the constraint. + + + + + + PropertyExistsConstraint tests that a named property + exists on the object provided through Match. + + Originally, PropertyConstraint provided this feature + in addition to making optional tests on the value + of the property. The two constraints are now separate. + + + + + Initializes a new instance of the class. + + The name of the property. + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Test whether the property exists for a given object + + The object to be tested + True for success, false for failure + + + + Returns the string representation of the constraint. + + + + + + RangeConstraint tests whether two _values are within a + specified range. + + + + + Initializes a new instance of the class. + + from must be less than or equal to true + Inclusive beginning of the range. Must be less than or equal to to. + Inclusive end of the range. Must be greater than or equal to from. + + + + Gets text describing a constraint + + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + Modifies the constraint to use an and returns self. + + + + + Modifies the constraint to use an and returns self. + + + + + Modifies the constraint to use a and returns self. + + + + + RegexConstraint can test whether a string matches + the pattern provided. + + + + + Initializes a new instance of the class. + + The pattern. + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + ResolvableConstraintExpression is used to represent a compound + constraint being constructed at a point where the last operator + may either terminate the expression or may have additional + qualifying constraints added to it. + + It is used, for example, for a Property element or for + an Exception element, either of which may be optionally + followed by constraints that apply to the property or + exception. + + + + + Create a new instance of ResolvableConstraintExpression + + + + + Create a new instance of ResolvableConstraintExpression, + passing in a pre-populated ConstraintBuilder. + + + + + Appends an And Operator to the expression + + + + + Appends an Or operator to the expression. + + + + + Resolve the current expression to a Constraint + + + + + ReusableConstraint wraps a constraint expression after + resolving it so that it can be reused consistently. + + + + + Construct a ReusableConstraint from a constraint expression + + The expression to be resolved and reused + + + + Converts a constraint to a ReusableConstraint + + The constraint to be converted + A ReusableConstraint + + + + Returns a that represents this instance. + + + A that represents this instance. + + + + + Return the top-level constraint for this expression + + + + + + SameAsConstraint tests whether an object is identical to + the object passed to its constructor + + + + + Initializes a new instance of the class. + + The expected object. + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + Summary description for SamePathConstraint. + + + + + Initializes a new instance of the class. + + The expected path + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + SamePathOrUnderConstraint tests that one path is under another + + + + + Initializes a new instance of the class. + + The expected path + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + SomeItemsConstraint applies another constraint to each + item in a collection, succeeding if any of them succeeds. + + + + + Construct a SomeItemsConstraint on top of an existing constraint + + + + + + The display name of this Constraint for use by ToString(). + The default value is the name of the constraint with + trailing "Constraint" removed. Derived classes may set + this to another name in their constructors. + + + + + Apply the item constraint to each item in the collection, + succeeding if any item succeeds. + + + + + + + StartsWithConstraint can test whether a string starts + with an expected substring. + + + + + Initializes a new instance of the class. + + The expected string + + + + Test whether the constraint is matched by the actual value. + This is a template method, which calls the IsMatch method + of the derived class. + + + + + + + StringConstraint is the abstract base for constraints + that operate on strings. It supports the IgnoreCase + modifier for string operations. + + + + + The expected value + + + + + Indicates whether tests should be case-insensitive + + + + + Description of this constraint + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Constructs a StringConstraint without an expected value + + + + + Constructs a StringConstraint given an expected value + + The expected value + + + + Modify the constraint to ignore case in matching. + + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + Test whether the constraint is satisfied by a given string + + The string to be tested + True for success, false for failure + + + + SubstringConstraint can test whether a string contains + the expected substring. + + + + + Initializes a new instance of the class. + + The expected. + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + ThrowsConstraint is used to test the exception thrown by + a delegate by applying a constraint to it. + + + + + Initializes a new instance of the class, + using a constraint to be applied to the exception. + + A constraint to apply to the caught exception. + + + + Get the actual exception thrown - used by Assert.Throws. + + + + + Gets text describing a constraint + + + + + Executes the code of the delegate and captures any exception. + If a non-null base constraint was provided, it applies that + constraint to the exception. + + A delegate representing the code to be tested + True if an exception is thrown and the constraint succeeds, otherwise false + + + + Converts an ActualValueDelegate to a TestDelegate + before calling the primary overload. + + + + + + + Write the actual value for a failing constraint test to a + MessageWriter. This override only handles the special message + used when an exception is expected but none is thrown. + + The writer on which the actual value is displayed + + + + ThrowsNothingConstraint tests that a delegate does not + throw an exception. + + + + + Gets text describing a constraint + + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True if no exception is thrown, otherwise false + + + + Applies the constraint to an ActualValueDelegate that returns + the value to be tested. The default implementation simply evaluates + the delegate but derived classes may override it to provide for + delayed processing. + + An ActualValueDelegate + A ConstraintResult + + + + The Tolerance class generalizes the notion of a tolerance + within which an equality test succeeds. Normally, it is + used with numeric types, but it can be used with any + type that supports taking a difference between two + objects and comparing that difference to a value. + + + + + Returns a default Tolerance object, equivalent to + specifying an exact match unless + is set, in which case, the + will be used. + + + + + Returns an empty Tolerance object, equivalent to + specifying an exact match even if + is set. + + + + + Constructs a linear tolerance of a specified amount + + + + + Constructs a tolerance given an amount and + + + + + Gets the for the current Tolerance + + + + + Tests that the current Tolerance is linear with a + numeric value, throwing an exception if it is not. + + + + + Gets the value of the current Tolerance instance. + + + + + Returns a new tolerance, using the current amount as a percentage. + + + + + Returns a new tolerance, using the current amount in Ulps + + + + + Returns a new tolerance with a as the amount, using + the current amount as a number of days. + + + + + Returns a new tolerance with a as the amount, using + the current amount as a number of hours. + + + + + Returns a new tolerance with a as the amount, using + the current amount as a number of minutes. + + + + + Returns a new tolerance with a as the amount, using + the current amount as a number of seconds. + + + + + Returns a new tolerance with a as the amount, using + the current amount as a number of milliseconds. + + + + + Returns a new tolerance with a as the amount, using + the current amount as a number of clock ticks. + + + + + Returns true if the current tolerance has not been set or is using the . + + + + + Modes in which the tolerance value for a comparison can be interpreted. + + + + + The tolerance was created with a value, without specifying + how the value would be used. This is used to prevent setting + the mode more than once and is generally changed to Linear + upon execution of the test. + + + + + The tolerance is used as a numeric range within which + two compared _values are considered to be equal. + + + + + Interprets the tolerance as the percentage by which + the two compared _values my deviate from each other. + + + + + Compares two _values based in their distance in + representable numbers. + + + + + TrueConstraint tests that the actual value is true + + + + + Initializes a new instance of the class. + + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + TypeConstraint is the abstract base for constraints + that take a Type as their expected value. + + + + + The expected Type used by the constraint + + + + + The type of the actual argument to which the constraint was applied + + + + + Construct a TypeConstraint for a given Type + + The expected type for the constraint + Prefix used in forming the constraint description + + + + Applies the constraint to an actual value, returning a ConstraintResult. + + The value to be tested + A ConstraintResult + + + + Apply the constraint to an actual value, returning true if it succeeds + + The actual argument + True if the constraint succeeds, otherwise false. + + + + UniqueItemsConstraint tests whether all the items in a + collection are unique. + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Check that all items are unique. + + + + + + + XmlSerializableConstraint tests whether + an object is serializable in xml format. + + + + + Gets text describing a constraint + + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + Returns the string representation of this constraint + + + + + ExactCountConstraint applies another constraint to each + item in a collection, succeeding only if a specified + number of items succeed. + + + + + Construct an ExactCountConstraint on top of an existing constraint + + + + + + + Apply the item constraint to each item in the collection, + succeeding only if the expected number of items pass. + + + + + + + Represents a constraint that succeeds if the specified + count of members of a collection match a base constraint. + + + + + Construct an ExactCountOperator for a specified count + + The expected count + + + + Returns a constraint that will apply the argument + to the members of a collection, succeeding if + none of them succeed. + + + + + ExceptionTypeConstraint is a special version of ExactTypeConstraint + used to provided detailed info about the exception thrown in + an error message. + + + + + Constructs an ExceptionTypeConstraint + + + + + Applies the constraint to an actual value, returning a ConstraintResult. + + The value to be tested + A ConstraintResult + + + + The Assert class contains a collection of static methods that + implement the most common assertions used in NUnit. + + + The Assert class contains a collection of static methods that + implement the most common assertions used in NUnit. + + + + + Verifies that a delegate throws a particular exception when called. + + A constraint to be satisfied by the exception + A TestSnippet delegate + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Verifies that a delegate throws a particular exception when called. + + A constraint to be satisfied by the exception + A TestSnippet delegate + + + + Verifies that a delegate throws a particular exception when called. + + The exception Type expected + A TestDelegate + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Verifies that a delegate throws a particular exception when called. + + The exception Type expected + A TestDelegate + + + + Verifies that a delegate throws a particular exception when called. + + Type of the expected exception + A TestDelegate + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Verifies that a delegate throws a particular exception when called. + + Type of the expected exception + A TestDelegate + + + + Verifies that a delegate throws an exception when called + and returns it. + + A TestDelegate + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Verifies that a delegate throws an exception when called + and returns it. + + A TestDelegate + + + + Verifies that a delegate throws an exception of a certain Type + or one derived from it when called and returns it. + + The expected Exception Type + A TestDelegate + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Verifies that a delegate throws an exception of a certain Type + or one derived from it when called and returns it. + + The expected Exception Type + A TestDelegate + + + + Verifies that a delegate throws an exception of a certain Type + or one derived from it when called and returns it. + + A TestDelegate + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Verifies that a delegate throws an exception of a certain Type + or one derived from it when called and returns it. + + A TestDelegate + + + + Verifies that a delegate does not throw an exception + + A TestDelegate + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Verifies that a delegate does not throw an exception. + + A TestDelegate + + + + Verifies that two doubles are equal considering a delta. If the + expected value is infinity then the delta value is ignored. If + they are not equal then an is + thrown. + + The expected value + The actual value + The maximum acceptable difference between the + the expected and the actual + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that two doubles are equal considering a delta. If the + expected value is infinity then the delta value is ignored. If + they are not equal then an is + thrown. + + The expected value + The actual value + The maximum acceptable difference between the + the expected and the actual + + + + Verifies that two doubles are equal considering a delta. If the + expected value is infinity then the delta value is ignored. If + they are not equal then an is + thrown. + + The expected value + The actual value + The maximum acceptable difference between the + the expected and the actual + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that two doubles are equal considering a delta. If the + expected value is infinity then the delta value is ignored. If + they are not equal then an is + thrown. + + The expected value + The actual value + The maximum acceptable difference between the + the expected and the actual + + + + Verifies that two objects are equal. Two objects are considered + equal if both are null, or if both have the same value. NUnit + has special semantics for some object types. + If they are not equal an is thrown. + + The value that is expected + The actual value + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that two objects are equal. Two objects are considered + equal if both are null, or if both have the same value. NUnit + has special semantics for some object types. + If they are not equal an is thrown. + + The value that is expected + The actual value + + + + Verifies that two objects are not equal. Two objects are considered + equal if both are null, or if both have the same value. NUnit + has special semantics for some object types. + If they are equal an is thrown. + + The value that is expected + The actual value + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that two objects are not equal. Two objects are considered + equal if both are null, or if both have the same value. NUnit + has special semantics for some object types. + If they are equal an is thrown. + + The value that is expected + The actual value + + + + Asserts that two objects refer to the same object. If they + are not the same an is thrown. + + The expected object + The actual object + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that two objects refer to the same object. If they + are not the same an is thrown. + + The expected object + The actual object + + + + Asserts that two objects do not refer to the same object. If they + are the same an is thrown. + + The expected object + The actual object + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that two objects do not refer to the same object. If they + are the same an is thrown. + + The expected object + The actual object + + + + Helper for Assert.AreEqual(double expected, double actual, ...) + allowing code generation to work consistently. + + The expected value + The actual value + The maximum acceptable difference between the + the expected and the actual + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that an object may be assigned a value of a given Type. + + The expected Type. + The object under examination + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that an object may be assigned a value of a given Type. + + The expected Type. + The object under examination + + + + Asserts that an object may be assigned a value of a given Type. + + The expected Type. + The object under examination + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that an object may be assigned a value of a given Type. + + The expected Type. + The object under examination + + + + Asserts that an object may not be assigned a value of a given Type. + + The expected Type. + The object under examination + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that an object may not be assigned a value of a given Type. + + The expected Type. + The object under examination + + + + Asserts that an object may not be assigned a value of a given Type. + + The expected Type. + The object under examination + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that an object may not be assigned a value of a given Type. + + The expected Type. + The object under examination + + + + Asserts that an object is an instance of a given type. + + The expected Type + The object being examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that an object is an instance of a given type. + + The expected Type + The object being examined + + + + Asserts that an object is an instance of a given type. + + The expected Type + The object being examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that an object is an instance of a given type. + + The expected Type + The object being examined + + + + Asserts that an object is not an instance of a given type. + + The expected Type + The object being examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that an object is not an instance of a given type. + + The expected Type + The object being examined + + + + Asserts that an object is not an instance of a given type. + + The expected Type + The object being examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that an object is not an instance of a given type. + + The expected Type + The object being examined + + + + Asserts that a condition is true. If the condition is false the method throws + an . + + The evaluated condition + The message to display if the condition is false + Arguments to be used in formatting the message + + + + Asserts that a condition is true. If the condition is false the method throws + an . + + The evaluated condition + + + + Asserts that a condition is true. If the condition is false the method throws + an . + + The evaluated condition + A function to build the message included with the Exception + + + + Asserts that a condition is true. If the condition is false the method throws + an . + + A lambda that returns a Boolean + The message to display if the condition is false + Arguments to be used in formatting the message + + + + Asserts that a condition is true. If the condition is false the method throws + an . + + A lambda that returns a Boolean + + + + Asserts that a condition is true. If the condition is false the method throws + an . + + A lambda that returns a Boolean + A function to build the message included with the Exception + + + + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and throwing an assertion exception on failure. + + The Type being compared. + An ActualValueDelegate returning the value to be tested + A Constraint expression to be applied + + + + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and throwing an assertion exception on failure. + + The Type being compared. + An ActualValueDelegate returning the value to be tested + A Constraint expression to be applied + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and throwing an assertion exception on failure. + + The Type being compared. + An ActualValueDelegate returning the value to be tested + A Constraint expression to be applied + A function to build the message included with the Exception + + + + Asserts that the code represented by a delegate throws an exception + that satisfies the constraint provided. + + A TestDelegate to be executed + A ThrowsConstraint used in the test + + + + Asserts that the code represented by a delegate throws an exception + that satisfies the constraint provided. + + A TestDelegate to be executed + A ThrowsConstraint used in the test + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Asserts that the code represented by a delegate throws an exception + that satisfies the constraint provided. + + A TestDelegate to be executed + A ThrowsConstraint used in the test + A function to build the message included with the Exception + + + + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and throwing an assertion exception on failure. + + The Type being compared. + The actual value to test + A Constraint to be applied + + + + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and throwing an assertion exception on failure. + + The Type being compared. + The actual value to test + A Constraint expression to be applied + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and throwing an assertion exception on failure. + + The Type being compared. + The actual value to test + A Constraint expression to be applied + A function to build the message included with the Exception + + + + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and throwing an assertion exception on failure. + Used as a synonym for That in rare cases where a private setter + causes a Visual Basic compilation error. + + The actual value to test + A Constraint to be applied + + + + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and throwing an assertion exception on failure. + Used as a synonym for That in rare cases where a private setter + causes a Visual Basic compilation error. + + + This method is provided for use by VB developers needing to test + the value of properties with private setters. + + The actual value to test + A Constraint expression to be applied + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Verifies that the first int is greater than the second + int. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first int is greater than the second + int. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + + + + Verifies that the first value is greater than the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is greater than the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + + + + Verifies that the first value is greater than the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is greater than the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + + + + Verifies that the first value is greater than the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is greater than the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + + + + Verifies that the first value is greater than the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is greater than the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + + + + Verifies that the first value is greater than the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is greater than the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + + + + Verifies that the first value is greater than the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is greater than the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + + + + Verifies that the first value is greater than the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is greater than the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + + + + Verifies that the first value is less than the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is less than the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + + + + Verifies that the first value is less than the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is less than the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + + + + Verifies that the first value is less than the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is less than the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + + + + Verifies that the first value is less than the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is less than the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + + + + Verifies that the first value is less than the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is less than the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + + + + Verifies that the first value is less than the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is less than the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + + + + Verifies that the first value is less than the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is less than the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + + + + Verifies that the first value is less than the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is less than the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + + + + Verifies that the first value is greater than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is greater than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + + + + Verifies that the first value is greater than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is greater than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + + + + Verifies that the first value is greater than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is greater than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + + + + Verifies that the first value is greater than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is greater than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + + + + Verifies that the first value is greater than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is greater than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + + + + Verifies that the first value is greater than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is greater than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + + + + Verifies that the first value is greater than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is greater than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + + + + Verifies that the first value is greater than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is greater than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + + + + Verifies that the first value is less than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is less than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + + + + Verifies that the first value is less than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is less than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + + + + Verifies that the first value is less than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is less than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + + + + Verifies that the first value is less than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is less than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + + + + Verifies that the first value is less than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is less than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + + + + Verifies that the first value is less than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is less than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + + + + Verifies that the first value is less than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is less than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + + + + Verifies that the first value is less than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is less than or equal to the second + value. If it is not, then an is thrown. - The first value, expected to be greater - The second value, expected to be less + The first value, expected to be less + The second value, expected to be greater + + + + Asserts that a condition is true. If the condition is false the method throws + an . + + The evaluated condition + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that a condition is true. If the condition is false the method throws + an . + + The evaluated condition + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that a condition is true. If the condition is false the method throws + an . + + The evaluated condition + + + + Asserts that a condition is true. If the condition is false the method throws + an . + + The evaluated condition + + + + Asserts that a condition is true. If the condition is false the method throws + an . + + The evaluated condition + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that a condition is true. If the condition is false the method throws + an . + + The evaluated condition + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that a condition is true. If the condition is false the method throws + an . + + The evaluated condition + + + + Asserts that a condition is true. If the condition is false the method throws + an . + + The evaluated condition + + + + Asserts that a condition is false. If the condition is true the method throws + an . + + The evaluated condition + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that a condition is false. If the condition is true the method throws + an . + + The evaluated condition + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that a condition is false. If the condition is true the method throws + an . + + The evaluated condition + + + + Asserts that a condition is false. If the condition is true the method throws + an . + + The evaluated condition + + + + Asserts that a condition is false. If the condition is true the method throws + an . + + The evaluated condition + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that a condition is false. If the condition is true the method throws + an . + + The evaluated condition + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that a condition is false. If the condition is true the method throws + an . + + The evaluated condition + + + + Asserts that a condition is false. If the condition is true the method throws + an . + + The evaluated condition + + + + Verifies that the object that is passed in is not equal to null + If the object is null then an + is thrown. + + The object that is to be tested + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the object that is passed in is not equal to null + If the object is null then an + is thrown. + + The object that is to be tested + + + + Verifies that the object that is passed in is not equal to null + If the object is null then an + is thrown. + + The object that is to be tested + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the object that is passed in is not equal to null + If the object is null then an + is thrown. + + The object that is to be tested + + + + Verifies that the object that is passed in is equal to null + If the object is not null then an + is thrown. + + The object that is to be tested + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the object that is passed in is equal to null + If the object is not null then an + is thrown. + + The object that is to be tested + + + + Verifies that the object that is passed in is equal to null + If the object is not null then an + is thrown. + + The object that is to be tested + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the object that is passed in is equal to null + If the object is not null then an + is thrown. + + The object that is to be tested + + + + Verifies that the double that is passed in is an NaN value. + If the object is not NaN then an + is thrown. + + The value that is to be tested + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the double that is passed in is an NaN value. + If the object is not NaN then an + is thrown. + + The value that is to be tested + + + + Verifies that the double that is passed in is an NaN value. + If the object is not NaN then an + is thrown. + + The value that is to be tested + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the double that is passed in is an NaN value. + If the object is not NaN then an + is thrown. + + The value that is to be tested + + + + Assert that a string is empty - that is equal to string.Empty + + The string to be tested + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Assert that a string is empty - that is equal to string.Empty + + The string to be tested + + + + Assert that an array, list or other collection is empty + + An array, list or other collection implementing ICollection + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Assert that an array, list or other collection is empty + + An array, list or other collection implementing ICollection + + + + Assert that a string is not empty - that is not equal to string.Empty + + The string to be tested + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Assert that a string is not empty - that is not equal to string.Empty + + The string to be tested + + + + Assert that an array, list or other collection is not empty + + An array, list or other collection implementing ICollection + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Assert that an array, list or other collection is not empty + + An array, list or other collection implementing ICollection + + + + Asserts that an int is zero. + + The number to be examined + + + + Asserts that an int is zero. + + The number to be examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that an unsigned int is zero. + + The number to be examined + + + + Asserts that an unsigned int is zero. + + The number to be examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that a Long is zero. + + The number to be examined + + + + Asserts that a Long is zero. + + The number to be examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that an unsigned Long is zero. + + The number to be examined + + + + Asserts that an unsigned Long is zero. + + The number to be examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that a decimal is zero. + + The number to be examined + + + + Asserts that a decimal is zero. + + The number to be examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that a double is zero. + + The number to be examined + + + + Asserts that a double is zero. + + The number to be examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that a float is zero. + + The number to be examined + + + + Asserts that a float is zero. + + The number to be examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that an int is not zero. + + The number to be examined + + + + Asserts that an int is not zero. + + The number to be examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that an unsigned int is not zero. + + The number to be examined + + + + Asserts that an unsigned int is not zero. + + The number to be examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that a Long is not zero. + + The number to be examined + + + + Asserts that a Long is not zero. + + The number to be examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that an unsigned Long is not zero. + + The number to be examined + + + + Asserts that an unsigned Long is not zero. + + The number to be examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that a decimal is zero. + + The number to be examined + + + + Asserts that a decimal is zero. + + The number to be examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that a double is zero. + + The number to be examined + + + + Asserts that a double is zero. + + The number to be examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that a float is zero. + + The number to be examined + + + + Asserts that a float is zero. + + The number to be examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that an int is negative. + + The number to be examined + + + + Asserts that an int is negative. + + The number to be examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that an unsigned int is negative. + + The number to be examined + + + + Asserts that an unsigned int is negative. + + The number to be examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that a Long is negative. + + The number to be examined + + + + Asserts that a Long is negative. + + The number to be examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that an unsigned Long is negative. + + The number to be examined + + + + Asserts that an unsigned Long is negative. + + The number to be examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that a decimal is negative. + + The number to be examined + + + + Asserts that a decimal is negative. + + The number to be examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that a double is negative. + + The number to be examined + + + + Asserts that a double is negative. + + The number to be examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that a float is negative. + + The number to be examined + + + + Asserts that a float is negative. + + The number to be examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that an int is negative. + + The number to be examined + + + + Asserts that an int is negative. + + The number to be examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that an unsigned int is negative. + + The number to be examined + + + + Asserts that an unsigned int is negative. + + The number to be examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that a Long is negative. + + The number to be examined + + + + Asserts that a Long is negative. + + The number to be examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that an unsigned Long is negative. + + The number to be examined + + + + Asserts that an unsigned Long is negative. + + The number to be examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that a decimal is negative. + + The number to be examined + + + + Asserts that a decimal is negative. + + The number to be examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that a double is negative. + + The number to be examined + + + + Asserts that a double is negative. + + The number to be examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that a float is negative. + + The number to be examined + + + + Asserts that a float is negative. + + The number to be examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + We don't actually want any instances of this object, but some people + like to inherit from it to add other static methods. Hence, the + protected constructor disallows any instances of this object. + + + + + The Equals method throws an InvalidOperationException. This is done + to make sure there is no mistake by calling this function. + + + + + + + override the default ReferenceEquals to throw an InvalidOperationException. This + implementation makes sure there is no mistake in calling this function + as part of Assert. + + + + + + + Throws a with the message and arguments + that are passed in. This allows a test to be cut short, with a result + of success returned to NUnit. + + The message to initialize the with. + Arguments to be used in formatting the message + + + + Throws a with the message and arguments + that are passed in. This allows a test to be cut short, with a result + of success returned to NUnit. + + The message to initialize the with. + + + + Throws a with the message and arguments + that are passed in. This allows a test to be cut short, with a result + of success returned to NUnit. + + + + + Throws an with the message and arguments + that are passed in. This is used by the other Assert functions. + + The message to initialize the with. + Arguments to be used in formatting the message + + + + Throws an with the message that is + passed in. This is used by the other Assert functions. + + The message to initialize the with. + + + + Throws an . + This is used by the other Assert functions. + + + + + Throws an with the message and arguments + that are passed in. This causes the test to be reported as ignored. + + The message to initialize the with. + Arguments to be used in formatting the message + + + + Throws an with the message that is + passed in. This causes the test to be reported as ignored. + + The message to initialize the with. + + + + Throws an . + This causes the test to be reported as ignored. + + + + + Throws an with the message and arguments + that are passed in. This causes the test to be reported as inconclusive. + + The message to initialize the with. + Arguments to be used in formatting the message + + + + Throws an with the message that is + passed in. This causes the test to be reported as inconclusive. + + The message to initialize the with. + + + + Throws an . + This causes the test to be reported as Inconclusive. + + + + + Asserts that an object is contained in a list. + + The expected object + The list to be examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that an object is contained in a list. + + The expected object + The list to be examined + + + + Class used to guard against unexpected argument values + or operations by throwing an appropriate exception. + + + + + Throws an exception if an argument is null + + The value to be tested + The name of the argument + + + + Throws an exception if a string argument is null or empty + + The value to be tested + The name of the argument + + + + Throws an ArgumentOutOfRangeException if the specified condition is not met. + + The condition that must be met + The exception message to be used + The name of the argument + + + + Throws an ArgumentException if the specified condition is not met. + + The condition that must be met + The exception message to be used + The name of the argument + + + + Throws an InvalidOperationException if the specified condition is not met. + + The condition that must be met + The exception message to be used + + + + Any ITest that implements this interface is at a level that the implementing + class should be disposed at the end of the test run + + + + + The IMethodInfo class is used to encapsulate information + about a method in a platform-independent manner. + + + + + Gets the Type from which this method was reflected. + + + + + Gets the MethodInfo for this method. + + + + + Gets the name of the method. + + + + + Gets a value indicating whether the method is abstract. + + + + + Gets a value indicating whether the method is public. + + + + + Gets a value indicating whether the method contains unassigned generic type parameters. + + + + + Gets a value indicating whether the method is a generic method. + + + + + Gets a value indicating whether the MethodInfo represents the definition of a generic method. + + + + + Gets the return Type of the method. + + + + + Gets the parameters of the method. + + + + + + Returns the Type arguments of a generic method or the Type parameters of a generic method definition. + + + + + Replaces the type parameters of the method with the array of types provided and returns a new IMethodInfo. + + The type arguments to be used + A new IMethodInfo with the type arguments replaced + + + + Invokes the method, converting any TargetInvocationException to an NUnitException. + + The object on which to invoke the method + The argument list for the method + The return value from the invoked method + + + + The IParameterInfo interface is an abstraction of a .NET parameter. + + + + + Gets a value indicating whether the parameter is optional + + + + + Gets an IMethodInfo representing the method for which this is a parameter + + + + + Gets the underlying .NET ParameterInfo + + + + + Gets the Type of the parameter + + + + + The IReflectionInfo interface is implemented by NUnit wrapper objects that perform reflection. + + + + + Returns an array of custom attributes of the specified type applied to this object + + + + + Returns a value indicating whether an attribute of the specified type is defined on this object. + + + + + The ITypeInfo interface is an abstraction of a .NET Type + + + + + Gets the underlying Type on which this ITypeInfo is based + + + + + Gets the base type of this type as an ITypeInfo + + + + + Returns true if the Type wrapped is equal to the argument + + + + + Gets the Name of the Type + + + + + Gets the FullName of the Type + + + + + Gets the assembly in which the type is declared + + + + + Gets the Namespace of the Type + + + + + Gets a value indicating whether the type is abstract. + + + + + Gets a value indicating whether the Type is a generic Type + + + + + Gets a value indicating whether the Type has generic parameters that have not been replaced by specific Types. + + + + + Gets a value indicating whether the Type is a generic Type definition + + + + + Gets a value indicating whether the type is sealed. + + + + + Gets a value indicating whether this type is a static class. + + + + + Get the display name for this typeInfo. + + + + + Get the display name for an oject of this type, constructed with specific arguments + + + + + Returns a Type representing a generic type definition from which this Type can be constructed. + + + + + Returns a new ITypeInfo representing an instance of this generic Type using the supplied Type arguments + + + + + Returns a value indicating whether this type has a method with a specified public attribute + + + + + Returns an array of IMethodInfos for methods of this Type + that match the specified flags. + + + + + Gets the public constructor taking the specified argument Types + + + + + Returns a value indicating whether this Type has a public constructor taking the specified argument Types. + + + + + Construct an object of this Type, using the specified arguments. + + + + + The TestOutput class holds a unit of output from + a test to a specific output stream + + + + + Construct with text, ouput destination type and + the name of the test that produced the output. + + Text to be output + Name of the stream or channel to which the text should be written + FullName of test that produced the output + + + + Return string representation of the object for debugging + + + + + + Get the text + + + + + Get the output type + + + + + Get the name of the test that created the output + + + + + Convert the TestOutput object to an XML string + + + + + CombiningStrategy is the abstract base for classes that + know how to combine values provided for individual test + parameters to create a set of test cases. + + + + + Gets the test cases generated by the CombiningStrategy. + + The test cases. + + + + The ISimpleTestBuilder interface is exposed by a class that knows how to + build a single TestMethod from a suitable MethodInfo Types. In general, + it is exposed by an attribute, but may be implemented in a helper class + used by the attribute in some cases. + + + + + Build a TestMethod from the provided MethodInfo. + + The method to be used as a test + The TestSuite to which the method will be added + A TestMethod object + + + + The ITestBuilder interface is exposed by a class that knows how to + build one or more TestMethods from a MethodInfo. In general, it is exposed + by an attribute, which has additional information available to provide + the necessary test parameters to distinguish the test cases built. + + + + + Build one or more TestMethods from the provided MethodInfo. + + The method to be used as a test + The TestSuite to which the method will be added + A TestMethod object + + + + The IDataPointProvider interface is used by extensions + that provide data for a single test parameter. + + + + + Determine whether any data is available for a parameter. + + An IParameterInfo representing one + argument to a parameterized test + True if any data is available, otherwise false. + + + + Return an IEnumerable providing data for use with the + supplied parameter. + + An IParameterInfo representing one + argument to a parameterized test + An IEnumerable providing the required data + + + + The IParameterDataSource interface is implemented by types + that can provide data for a test method parameter. + + + + + Gets an enumeration of data items for use as arguments + for a test method parameter. + + The parameter for which data is needed + An enumeration containing individual data items + + + + A PropertyBag represents a collection of name/value pairs + that allows duplicate entries with the same key. Methods + are provided for adding a new pair as well as for setting + a key to a single value. All keys are strings but _values + may be of any type. Null _values are not permitted, since + a null entry represents the absence of the key. + + The entries in a PropertyBag are of two kinds: those that + take a single value and those that take multiple _values. + However, the PropertyBag has no knowledge of which entries + fall into each category and the distinction is entirely + up to the code using the PropertyBag. + + When working with multi-valued properties, client code + should use the Add method to add name/value pairs and + indexing to retrieve a list of all _values for a given + key. For example: + + bag.Add("Tag", "one"); + bag.Add("Tag", "two"); + Assert.That(bag["Tag"], + Is.EqualTo(new string[] { "one", "two" })); + + When working with single-valued propeties, client code + should use the Set method to set the value and Get to + retrieve the value. The GetSetting methods may also be + used to retrieve the value in a type-safe manner while + also providing default. For example: + + bag.Set("Priority", "low"); + bag.Set("Priority", "high"); // replaces value + Assert.That(bag.Get("Priority"), + Is.EqualTo("high")); + Assert.That(bag.GetSetting("Priority", "low"), + Is.EqualTo("high")); + + + + + Adds a key/value pair to the property bag + + The key + The value + + + + Sets the value for a key, removing any other + _values that are already in the property set. + + + + + + + Gets a single value for a key, using the first + one if multiple _values are present and returning + null if the value is not found. + + + + + Gets a flag indicating whether the specified key has + any entries in the property set. + + The key to be checked + True if their are _values present, otherwise false + + + + Gets or sets the list of _values for a particular key + + The key for which the _values are to be retrieved or set + + + + Gets a collection containing all the keys in the property set + + + + + Common interface supported by all representations + of a test. Only includes informational fields. + The Run method is specifically excluded to allow + for data-only representations of a test. + + + + + Gets the id of the test + + + + + Gets the name of the test + + + + + Gets the fully qualified name of the test + + + + + Gets the name of the class containing this test. Returns + null if the test is not associated with a class. + + + + + Gets the name of the method implementing this test. + Returns null if the test is not implemented as a method. + + + + + Gets the Type of the test fixture, if applicable, or + null if no fixture type is associated with this test. + + + + + Gets an IMethod for the method implementing this test. + Returns null if the test is not implemented as a method. + + + + + Gets the RunState of the test, indicating whether it can be run. + + + + + Count of the test cases ( 1 if this is a test case ) + + + + + Gets the properties of the test + + + + + Gets the parent test, if any. + + The parent test or null if none exists. + + + + Returns true if this is a test suite + + + + + Gets a bool indicating whether the current test + has any descendant tests. + + + + + Gets this test's child tests + + A list of child tests + + + + Gets a fixture object for running this test. + + + + + The ITestData interface is implemented by a class that + represents a single instance of a parameterized test. + + + + + Gets the name to be used for the test + + + + + Gets the RunState for this test case. + + + + + Gets the argument list to be provided to the test + + + + + Gets the property dictionary for the test case + + + + + The ITestCaseData interface is implemented by a class + that is able to return the data required to create an + instance of a parameterized test fixture. + + + + + Get the TypeArgs if separately set + + + + + The ITestCaseData interface is implemented by a class + that is able to return complete testcases for use by + a parameterized test method. + + + + + Gets the expected result of the test case + + + + + Returns true if an expected result has been set + + + + + Interface to be implemented by filters applied to tests. + The filter applies when running the test, after it has been + loaded, since this is the only time an ITest exists. + + + + + Determine if a particular test passes the filter criteria. Pass + may examine the parents and/or descendants of a test, depending + on the semantics of the particular filter + + The test to which the filter is applied + True if the test passes the filter, otherwise false + + + + Determine if a test matches the filter expicitly. That is, it must + be a direct match of the test itself or one of it's children. + + The test to which the filter is applied + True if the test matches the filter explicityly, otherwise false + + + + The ITestListener interface is used internally to receive + notifications of significant events while a test is being + run. The events are propagated to clients by means of an + AsyncCallback. NUnit extensions may also monitor these events. + + + + + Called when a test has just started + + The test that is starting + + + + Called when a test has finished + + The result of the test + + + + Called when a test produces output for immediate display + + A TestOutput object containing the text to display + + + + The ITestResult interface represents the result of a test. + + + + + Gets the ResultState of the test result, which + indicates the success or failure of the test. + + + + + Gets the name of the test result + + + + + Gets the full name of the test result + + + + + Gets the elapsed time for running the test in seconds + + + + + Gets or sets the time the test started running. + + + + + Gets or sets the time the test finished running. + + + + + Gets the message associated with a test + failure or with not running the test + + + + + Gets any stacktrace associated with an + error or failure. Not available in + the Compact Framework 1.0. + + + + + Gets the number of asserts executed + when running the test and all its children. + + + + + Gets the number of test cases that failed + when running the test and all its children. + + + + + Gets the number of test cases that passed + when running the test and all its children. + + + + + Gets the number of test cases that were skipped + when running the test and all its children. + + + + + Gets the number of test cases that were inconclusive + when running the test and all its children. + + + + + Indicates whether this result has any child results. + Accessing HasChildren should not force creation of the + Children collection in classes implementing this interface. + + + + + Gets the the collection of child results. + + + + + Gets the Test to which this result applies. + + + + + Gets any text output written to this result. + + + + + An object implementing IXmlNodeBuilder is able to build + an XML representation of itself and any children. + + + + + Returns a TNode representing the current object. + + If true, children are included where applicable + A TNode representing the result + + + + Returns a TNode representing the current object after + adding it as a child of the supplied parent node. + + The parent node. + If true, children are included, where applicable + + + + + The ResultState class represents the outcome of running a test. + It contains two pieces of information. The Status of the test + is an enum indicating whether the test passed, failed, was + skipped or was inconclusive. The Label provides a more + detailed breakdown for use by client runners. + + + + + Initializes a new instance of the class. + + The TestStatus. + + + + Initializes a new instance of the class. + + The TestStatus. + The label. + + + + Initializes a new instance of the class. + + The TestStatus. + The stage at which the result was produced - + - Verifies that the first value is greater than the second - value. If it is not, then an - is thrown. + Initializes a new instance of the class. - The first value, expected to be greater - The second value, expected to be less - The message to display in case of failure - Array of objects to be used in formatting the message + The TestStatus. + The label. + The stage at which the result was produced - + - Verifies that the first value is greater than the second - value. If it is not, then an - is thrown. + The result is inconclusive - The first value, expected to be greater - The second value, expected to be less - The message to display in case of failure - + - Verifies that the first value is greater than the second - value. If it is not, then an - is thrown. + The test has been skipped. - The first value, expected to be greater - The second value, expected to be less - + - Verifies that the first value is greater than the second - value. If it is not, then an - is thrown. + The test has been ignored. - The first value, expected to be greater - The second value, expected to be less - The message to display in case of failure - Array of objects to be used in formatting the message - + - Verifies that the first value is greater than the second - value. If it is not, then an - is thrown. + The test was skipped because it is explicit - The first value, expected to be greater - The second value, expected to be less - The message to display in case of failure - + - Verifies that the first value is greater than the second - value. If it is not, then an - is thrown. + The test succeeded - The first value, expected to be greater - The second value, expected to be less - + - Verifies that the first value is greater than the second - value. If it is not, then an - is thrown. + The test failed - The first value, expected to be greater - The second value, expected to be less - The message to display in case of failure - Array of objects to be used in formatting the message - + - Verifies that the first value is greater than the second - value. If it is not, then an - is thrown. + The test encountered an unexpected exception - The first value, expected to be greater - The second value, expected to be less - The message to display in case of failure - + - Verifies that the first value is greater than the second - value. If it is not, then an - is thrown. + The test was cancelled by the user - The first value, expected to be greater - The second value, expected to be less - + - Verifies that the first value is greater than the second - value. If it is not, then an - is thrown. + The test was not runnable. - The first value, expected to be greater - The second value, expected to be less - The message to display in case of failure - Array of objects to be used in formatting the message - + - Verifies that the first value is greater than the second - value. If it is not, then an - is thrown. + A suite failed because one or more child tests failed or had errors - The first value, expected to be greater - The second value, expected to be less - The message to display in case of failure - + - Verifies that the first value is greater than the second - value. If it is not, then an - is thrown. + A suite failed in its OneTimeSetUp + + + + + A suite had an unexpected exception in its OneTimeSetUp + + + + + A suite had an unexpected exception in its OneTimeDown + + + + + Gets the TestStatus for the test. + + The status. + + + + Gets the label under which this test result is + categorized, if any. + + + + + Gets the stage of test execution in which + the failure or other result took place. + + + + + Get a new ResultState, which is the same as the current + one but with the FailureSite set to the specified value. + + The FailureSite to use + A new ResultState + + + + Determines whether the specified , is equal to this instance. + + The to compare with this instance. + + true if the specified is equal to this instance; otherwise, false. + + + + + Returns a hash code for this instance. + + + A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table. + + + + + Returns a that represents this instance. + + + A that represents this instance. + + + + + The FailureSite enum indicates the stage of a test + in which an error or failure occurred. + + + + + Failure in the test itself + + + + + Failure in the SetUp method + + + + + Failure in the TearDown method + + + + + Failure of a parent test + + + + + Failure of a child test + + + + + The RunState enum indicates whether a test can be executed. + + + + + The test is not runnable. + + + + + The test is runnable. + + + + + The test can only be run explicitly + + + + + The test has been skipped. This value may + appear on a Test when certain attributes + are used to skip the test. + + + + + The test has been ignored. May appear on + a Test, when the IgnoreAttribute is used. + + + + + The TestStatus enum indicates the result of running a test + + + + + The test was inconclusive + + + + + The test has skipped + + + + + The test succeeded + + + + + The test failed + + + + + TNode represents a single node in the XML representation + of a Test or TestResult. It replaces System.Xml.XmlNode and + System.Xml.Linq.XElement, providing a minimal set of methods + for operating on the XML in a platform-independent manner. + + + + + Constructs a new instance of TNode + + The name of the node + + + + Constructs a new instance of TNode with a value + + The name of the node + The text content of the node + + + + Constructs a new instance of TNode with a value + + The name of the node + The text content of the node + Flag indicating whether to use CDATA when writing the text + + + + Gets the name of the node + + + + + Gets the value of the node + + + + + Gets a flag indicating whether the value should be output using CDATA. + + + + + Gets the dictionary of attributes + + + + + Gets a list of child nodes + + + + + Gets the first ChildNode + + + + + Gets the XML representation of this node. + + + + + Create a TNode from it's XML text representation + + The XML text to be parsed + A TNode + + + + Adds a new element as a child of the current node and returns it. + + The element name. + The newly created child element + + + + Adds a new element with a value as a child of the current node and returns it. + + The element name + The text content of the new element + The newly created child element + + + + Adds a new element with a value as a child of the current node and returns it. + The value will be output using a CDATA section. + + The element name + The text content of the new element + The newly created child element + + + + Adds an attribute with a specified name and value to the XmlNode. + + The name of the attribute. + The value of the attribute. + + + + Finds a single descendant of this node matching an xpath + specification. The format of the specification is + limited to what is needed by NUnit and its tests. + + + + + + + Finds all descendants of this node matching an xpath + specification. The format of the specification is + limited to what is needed by NUnit and its tests. + + + + + Writes the XML representation of the node to an XmlWriter + + + + + + Class used to represent a list of XmlResults + + + + + Class used to represent the attributes of a node + + + + + Gets or sets the value associated with the specified key. + Overridden to return null if attribute is not found. + + The key. + Value of the attribute or null + + + + The IFixtureBuilder interface is exposed by a class that knows how to + build a TestFixture from one or more Types. In general, it is exposed + by an attribute, but may be implemented in a helper class used by the + attribute in some cases. + + + + + Build one or more TestFixtures from type provided. At least one + non-null TestSuite must always be returned, since the method is + generally called because the user has marked the target class as + a fixture. If something prevents the fixture from being used, it + will be returned nonetheless, labelled as non-runnable. + + The type info of the fixture to be used. + A TestSuite object or one derived from TestSuite. + + + + IImplyFixture is an empty marker interface used by attributes like + TestAttribute that cause the class where they are used to be treated + as a TestFixture even without a TestFixtureAttribute. + + Marker interfaces are not usually considered a good practice, but + we use it here to avoid cluttering the attribute hierarchy with + classes that don't contain any extra implementation. - The first value, expected to be greater - The second value, expected to be less - + - Verifies that the first value is greater than the second - value. If it is not, then an - is thrown. + The IApplyToContext interface is implemented by attributes + that want to make changes to the execution context before + a test is run. - The first value, expected to be greater - The second value, expected to be less - The message to display in case of failure - Array of objects to be used in formatting the message - + - Verifies that the first value is greater than the second - value. If it is not, then an - is thrown. + Apply changes to the execution context - The first value, expected to be greater - The second value, expected to be less - The message to display in case of failure + The execution context - + - Verifies that the first value is greater than the second - value. If it is not, then an - is thrown. + The IApplyToTest interface is implemented by self-applying + attributes that modify the state of a test in some way. - The first value, expected to be greater - The second value, expected to be less - + - Verifies that the first value is greater than the second - value. If it is not, then an - is thrown. + Modifies a test as defined for the specific attribute. - The first value, expected to be greater - The second value, expected to be less - The message to display in case of failure - Array of objects to be used in formatting the message + The test to modify - + - Verifies that the first value is greater than the second - value. If it is not, then an - is thrown. + The ISuiteBuilder interface is exposed by a class that knows how to + build a suite from one or more Types. - The first value, expected to be greater - The second value, expected to be less - The message to display in case of failure - + - Verifies that the first value is greater than the second - value. If it is not, then an - is thrown. + Examine the type and determine if it is suitable for + this builder to use in building a TestSuite. + + Note that returning false will cause the type to be ignored + in loading the tests. If it is desired to load the suite + but label it as non-runnable, ignored, etc., then this + method must return true. - The first value, expected to be greater - The second value, expected to be less + The type of the fixture to be used + True if the type can be used to build a TestSuite - + - Verifies that the first value is less than the second - value. If it is not, then an - is thrown. + Build a TestSuite from type provided. - The first value, expected to be less - The second value, expected to be greater - The message to display in case of failure - Array of objects to be used in formatting the message + The type of the fixture to be used + A TestSuite - + - Verifies that the first value is less than the second - value. If it is not, then an - is thrown. + The ITestCaseBuilder interface is exposed by a class that knows how to + build a test case from certain methods. - The first value, expected to be less - The second value, expected to be greater - The message to display in case of failure + + This interface is not the same as the ITestCaseBuilder interface in NUnit 2.x. + We have reused the name because the two products don't interoperate at all. + - + - Verifies that the first value is less than the second - value. If it is not, then an - is thrown. + Examine the method and determine if it is suitable for + this builder to use in building a TestCase to be + included in the suite being populated. + + Note that returning false will cause the method to be ignored + in loading the tests. If it is desired to load the method + but label it as non-runnable, ignored, etc., then this + method must return true. - The first value, expected to be less - The second value, expected to be greater + The test method to examine + The suite being populated + True is the builder can use this method - + - Verifies that the first value is less than the second - value. If it is not, then an - is thrown. + Build a TestCase from the provided MethodInfo for + inclusion in the suite being constructed. - The first value, expected to be less - The second value, expected to be greater - The message to display in case of failure - Array of objects to be used in formatting the message + The method to be used as a test case + The test suite being populated, or null + A TestCase or null - + - Verifies that the first value is less than the second - value. If it is not, then an - is thrown. + ICommandWrapper is implemented by attributes and other + objects able to wrap a TestCommand with another command. - The first value, expected to be less - The second value, expected to be greater - The message to display in case of failure + + Attributes or other objects should implement one of the + derived interfaces, rather than this one, since they + indicate in which part of the command chain the wrapper + should be applied. + - + - Verifies that the first value is less than the second - value. If it is not, then an - is thrown. + Wrap a command and return the result. - The first value, expected to be less - The second value, expected to be greater + The command to be wrapped + The wrapped command - + - Verifies that the first value is less than the second - value. If it is not, then an - is thrown. + Objects implementing this interface are used to wrap + the TestMethodCommand itself. They apply after SetUp + has been run and before TearDown. - The first value, expected to be less - The second value, expected to be greater - The message to display in case of failure - Array of objects to be used in formatting the message - + - Verifies that the first value is less than the second - value. If it is not, then an - is thrown. + Objects implementing this interface are used to wrap + the entire test, including SetUp and TearDown. - The first value, expected to be less - The second value, expected to be greater - The message to display in case of failure - + - Verifies that the first value is less than the second - value. If it is not, then an - is thrown. + AssemblyHelper provides static methods for working + with assemblies. - The first value, expected to be less - The second value, expected to be greater - + - Verifies that the first value is less than the second - value. If it is not, then an - is thrown. + Gets the path from which an assembly was loaded. + For builds where this is not possible, returns + the name of the assembly. - The first value, expected to be less - The second value, expected to be greater - The message to display in case of failure - Array of objects to be used in formatting the message + The assembly. + The path. - + - Verifies that the first value is less than the second - value. If it is not, then an - is thrown. + Gets the path to the directory from which an assembly was loaded. - The first value, expected to be less - The second value, expected to be greater - The message to display in case of failure + The assembly. + The path. - + - Verifies that the first value is less than the second - value. If it is not, then an - is thrown. + Gets the AssemblyName of an assembly. - The first value, expected to be less - The second value, expected to be greater + The assembly + An AssemblyName - + - Verifies that the first value is less than the second - value. If it is not, then an - is thrown. + Loads an assembly given a string, which may be the + path to the assembly or the AssemblyName - The first value, expected to be less - The second value, expected to be greater - The message to display in case of failure - Array of objects to be used in formatting the message + + - + - Verifies that the first value is less than the second - value. If it is not, then an - is thrown. + Gets the assembly path from code base. - The first value, expected to be less - The second value, expected to be greater - The message to display in case of failure + Public for testing purposes + The code base. + - + - Verifies that the first value is less than the second - value. If it is not, then an - is thrown. + The ParameterDataProvider class implements IParameterDataProvider + and hosts one or more individual providers. - The first value, expected to be less - The second value, expected to be greater - + - Verifies that the first value is less than the second - value. If it is not, then an - is thrown. + Construct with a collection of individual providers - The first value, expected to be less - The second value, expected to be greater - The message to display in case of failure - Array of objects to be used in formatting the message - + - Verifies that the first value is less than the second - value. If it is not, then an - is thrown. + Determine whether any data is available for a parameter. - The first value, expected to be less - The second value, expected to be greater - The message to display in case of failure + An IParameterInfo representing one + argument to a parameterized test + True if any data is available, otherwise false. - + - Verifies that the first value is less than the second - value. If it is not, then an - is thrown. + Return an IEnumerable providing data for use with the + supplied parameter. - The first value, expected to be less - The second value, expected to be greater + An IParameterInfo representing one + argument to a parameterized test + An IEnumerable providing the required data - + - Verifies that the first value is less than the second - value. If it is not, then an - is thrown. + Built-in SuiteBuilder for all types of test classes. - The first value, expected to be less - The second value, expected to be greater - The message to display in case of failure - Array of objects to be used in formatting the message - + - Verifies that the first value is less than the second - value. If it is not, then an - is thrown. + Checks to see if the provided Type is a fixture. + To be considered a fixture, it must be a non-abstract + class with one or more attributes implementing the + IFixtureBuilder interface or one or more methods + marked as tests. - The first value, expected to be less - The second value, expected to be greater - The message to display in case of failure + The fixture type to check + True if the fixture can be built, false if not - + - Verifies that the first value is less than the second - value. If it is not, then an - is thrown. + Build a TestSuite from TypeInfo provided. - The first value, expected to be less - The second value, expected to be greater + The fixture type to build + A TestSuite built from that type - + - Verifies that the first value is less than the second - value. If it is not, then an - is thrown. + We look for attributes implementing IFixtureBuilder at one level + of inheritance at a time. Attributes on base classes are not used + unless there are no fixture builder attributes at all on the derived + class. This is by design. - The first value, expected to be less - The second value, expected to be greater - The message to display in case of failure - Array of objects to be used in formatting the message + The type being examined for attributes + A list of the attributes found. - + - Verifies that the first value is less than the second - value. If it is not, then an - is thrown. + NUnitTestCaseBuilder is a utility class used by attributes + that build test cases. - The first value, expected to be less - The second value, expected to be greater - The message to display in case of failure - + - Verifies that the first value is less than the second - value. If it is not, then an - is thrown. + Constructs an - The first value, expected to be less - The second value, expected to be greater - + - Verifies that the first value is greater than or equal tothe second - value. If it is not, then an - is thrown. + Builds a single NUnitTestMethod, either as a child of the fixture + or as one of a set of test cases under a ParameterizedTestMethodSuite. - The first value, expected to be greater - The second value, expected to be less - The message to display in case of failure - Array of objects to be used in formatting the message + The MethodInfo from which to construct the TestMethod + The suite or fixture to which the new test will be added + The ParameterSet to be used, or null + + + + + Helper method that checks the signature of a TestMethod and + any supplied parameters to determine if the test is valid. + + Currently, NUnitTestMethods are required to be public, + non-abstract methods, either static or instance, + returning void. They may take arguments but the _values must + be provided or the TestMethod is not considered runnable. + + Methods not meeting these criteria will be marked as + non-runnable and the method will return false in that case. + + The TestMethod to be checked. If it + is found to be non-runnable, it will be modified. + Parameters to be used for this test, or null + True if the method signature is valid, false if not + + The return value is no longer used internally, but is retained + for testing purposes. + - + - Verifies that the first value is greater than or equal tothe second - value. If it is not, then an - is thrown. + Class that can build a tree of automatic namespace + suites from a group of fixtures. - The first value, expected to be greater - The second value, expected to be less - The message to display in case of failure - + - Verifies that the first value is greater than or equal tothe second - value. If it is not, then an - is thrown. + NamespaceDictionary of all test suites we have created to represent + namespaces. Used to locate namespace parent suites for fixtures. - The first value, expected to be greater - The second value, expected to be less - + - Verifies that the first value is greater than or equal tothe second - value. If it is not, then an - is thrown. + The root of the test suite being created by this builder. - The first value, expected to be greater - The second value, expected to be less - The message to display in case of failure - Array of objects to be used in formatting the message - + - Verifies that the first value is greater than or equal tothe second - value. If it is not, then an - is thrown. + Initializes a new instance of the class. - The first value, expected to be greater - The second value, expected to be less - The message to display in case of failure + The root suite. - + - Verifies that the first value is greater than or equal tothe second - value. If it is not, then an - is thrown. + Gets the root entry in the tree created by the NamespaceTreeBuilder. - The first value, expected to be greater - The second value, expected to be less + The root suite. - + - Verifies that the first value is greater than or equal tothe second - value. If it is not, then an - is thrown. + Adds the specified fixtures to the tree. - The first value, expected to be greater - The second value, expected to be less - The message to display in case of failure - Array of objects to be used in formatting the message + The fixtures to be added. - + - Verifies that the first value is greater than or equal tothe second - value. If it is not, then an - is thrown. + Adds the specified fixture to the tree. - The first value, expected to be greater - The second value, expected to be less - The message to display in case of failure + The fixture to be added. - + - Verifies that the first value is greater than or equal tothe second - value. If it is not, then an - is thrown. + CombinatorialStrategy creates test cases by using all possible + combinations of the parameter data. - The first value, expected to be greater - The second value, expected to be less - + - Verifies that the first value is greater than or equal tothe second - value. If it is not, then an - is thrown. + Gets the test cases generated by the CombiningStrategy. - The first value, expected to be greater - The second value, expected to be less - The message to display in case of failure - Array of objects to be used in formatting the message + The test cases. - + - Verifies that the first value is greater than or equal tothe second - value. If it is not, then an - is thrown. + Provides data from fields marked with the DatapointAttribute or the + DatapointsAttribute. - The first value, expected to be greater - The second value, expected to be less - The message to display in case of failure - + - Verifies that the first value is greater than or equal tothe second - value. If it is not, then an - is thrown. + Determine whether any data is available for a parameter. - The first value, expected to be greater - The second value, expected to be less + A ParameterInfo representing one + argument to a parameterized test + + True if any data is available, otherwise false. + - + - Verifies that the first value is greater than or equal tothe second - value. If it is not, then an - is thrown. + Return an IEnumerable providing data for use with the + supplied parameter. - The first value, expected to be greater - The second value, expected to be less - The message to display in case of failure - Array of objects to be used in formatting the message + A ParameterInfo representing one + argument to a parameterized test + + An IEnumerable providing the required data + - + - Verifies that the first value is greater than or equal tothe second - value. If it is not, then an - is thrown. + Class to build ether a parameterized or a normal NUnitTestMethod. + There are four cases that the builder must deal with: + 1. The method needs no params and none are provided + 2. The method needs params and they are provided + 3. The method needs no params but they are provided in error + 4. The method needs params but they are not provided + This could have been done using two different builders, but it + turned out to be simpler to have just one. The BuildFrom method + takes a different branch depending on whether any parameters are + provided, but all four cases are dealt with in lower-level methods - The first value, expected to be greater - The second value, expected to be less - The message to display in case of failure - + - Verifies that the first value is greater than or equal tothe second - value. If it is not, then an - is thrown. + Determines if the method can be used to build an NUnit test + test method of some kind. The method must normally be marked + with an identifying attribute for this to be true. + + Note that this method does not check that the signature + of the method for validity. If we did that here, any + test methods with invalid signatures would be passed + over in silence in the test run. Since we want such + methods to be reported, the check for validity is made + in BuildFrom rather than here. - The first value, expected to be greater - The second value, expected to be less + An IMethodInfo for the method being used as a test method + True if the builder can create a test case from this method - + - Verifies that the first value is greater than or equal tothe second - value. If it is not, then an - is thrown. + Build a Test from the provided MethodInfo. Depending on + whether the method takes arguments and on the availability + of test case data, this method may return a single test + or a group of tests contained in a ParameterizedMethodSuite. - The first value, expected to be greater - The second value, expected to be less - The message to display in case of failure - Array of objects to be used in formatting the message + The method for which a test is to be built + A Test representing one or more method invocations - + - Verifies that the first value is greater than or equal tothe second - value. If it is not, then an - is thrown. + Determines if the method can be used to build an NUnit test + test method of some kind. The method must normally be marked + with an identifying attribute for this to be true. + + Note that this method does not check that the signature + of the method for validity. If we did that here, any + test methods with invalid signatures would be passed + over in silence in the test run. Since we want such + methods to be reported, the check for validity is made + in BuildFrom rather than here. - The first value, expected to be greater - The second value, expected to be less - The message to display in case of failure + An IMethodInfo for the method being used as a test method + The test suite being built, to which the new test would be added + True if the builder can create a test case from this method - + - Verifies that the first value is greater than or equal tothe second - value. If it is not, then an - is thrown. + Build a Test from the provided MethodInfo. Depending on + whether the method takes arguments and on the availability + of test case data, this method may return a single test + or a group of tests contained in a ParameterizedMethodSuite. - The first value, expected to be greater - The second value, expected to be less + The method for which a test is to be built + The test fixture being populated, or null + A Test representing one or more method invocations - + - Verifies that the first value is greater than or equal tothe second - value. If it is not, then an - is thrown. + Builds a ParameterizedMethodSuite containing individual test cases. - The first value, expected to be greater - The second value, expected to be less - The message to display in case of failure - Array of objects to be used in formatting the message + The method for which a test is to be built. + The list of test cases to include. + A ParameterizedMethodSuite populated with test cases - + - Verifies that the first value is greater than or equal tothe second - value. If it is not, then an - is thrown. + Build a simple, non-parameterized TestMethod for this method. - The first value, expected to be greater - The second value, expected to be less - The message to display in case of failure + The MethodInfo for which a test is to be built + The test suite for which the method is being built + A TestMethod. - + - Verifies that the first value is greater than or equal tothe second - value. If it is not, then an - is thrown. + NUnitTestFixtureBuilder is able to build a fixture given + a class marked with a TestFixtureAttribute or an unmarked + class containing test methods. In the first case, it is + called by the attribute and in the second directly by + NUnitSuiteBuilder. - The first value, expected to be greater - The second value, expected to be less - + - Verifies that the first value is greater than or equal tothe second - value. If it is not, then an - is thrown. + Build a TestFixture from type provided. A non-null TestSuite + must always be returned, since the method is generally called + because the user has marked the target class as a fixture. + If something prevents the fixture from being used, it should + be returned nonetheless, labelled as non-runnable. - The first value, expected to be greater - The second value, expected to be less - The message to display in case of failure - Array of objects to be used in formatting the message + An ITypeInfo for the fixture to be used. + A TestSuite object or one derived from TestSuite. - + - Verifies that the first value is greater than or equal tothe second - value. If it is not, then an - is thrown. + Overload of BuildFrom called by tests that have arguments. + Builds a fixture using the provided type and information + in the ITestFixtureData object. - The first value, expected to be greater - The second value, expected to be less - The message to display in case of failure + The TypeInfo for which to construct a fixture. + An object implementing ITestFixtureData or null. + - + - Verifies that the first value is greater than or equal tothe second - value. If it is not, then an - is thrown. + Method to add test cases to the newly constructed fixture. - The first value, expected to be greater - The second value, expected to be less + The fixture to which cases should be added - + - Verifies that the first value is less than or equal to the second - value. If it is not, then an - is thrown. + Method to create a test case from a MethodInfo and add + it to the fixture being built. It first checks to see if + any global TestCaseBuilder addin wants to build the + test case. If not, it uses the internal builder + collection maintained by this fixture builder. + + The default implementation has no test case builders. + Derived classes should add builders to the collection + in their constructor. - The first value, expected to be less - The second value, expected to be greater - The message to display in case of failure - Array of objects to be used in formatting the message + The method for which a test is to be created + The test suite being built. + A newly constructed Test - + - Verifies that the first value is less than or equal to the second - value. If it is not, then an - is thrown. + PairwiseStrategy creates test cases by combining the parameter + data so that all possible pairs of data items are used. - The first value, expected to be less - The second value, expected to be greater - The message to display in case of failure + + + The number of test cases that cover all possible pairs of test function + parameters values is significantly less than the number of test cases + that cover all possible combination of test function parameters values. + And because different studies show that most of software failures are + caused by combination of no more than two parameters, pairwise testing + can be an effective ways to test the system when it's impossible to test + all combinations of parameters. + + + The PairwiseStrategy code is based on "jenny" tool by Bob Jenkins: + http://burtleburtle.net/bob/math/jenny.html + + - + - Verifies that the first value is less than or equal to the second - value. If it is not, then an - is thrown. + FleaRand is a pseudo-random number generator developed by Bob Jenkins: + http://burtleburtle.net/bob/rand/talksmall.html#flea - The first value, expected to be less - The second value, expected to be greater - + - Verifies that the first value is less than or equal to the second - value. If it is not, then an - is thrown. + Initializes a new instance of the FleaRand class. - The first value, expected to be less - The second value, expected to be greater - The message to display in case of failure - Array of objects to be used in formatting the message + The seed. - + - Verifies that the first value is less than or equal to the second - value. If it is not, then an - is thrown. + FeatureInfo represents coverage of a single value of test function + parameter, represented as a pair of indices, Dimension and Feature. In + terms of unit testing, Dimension is the index of the test parameter and + Feature is the index of the supplied value in that parameter's list of + sources. - The first value, expected to be less - The second value, expected to be greater - The message to display in case of failure - + - Verifies that the first value is less than or equal to the second - value. If it is not, then an - is thrown. + Initializes a new instance of FeatureInfo class. - The first value, expected to be less - The second value, expected to be greater + Index of a dimension. + Index of a feature. - + - Verifies that the first value is less than or equal to the second - value. If it is not, then an - is thrown. + A FeatureTuple represents a combination of features, one per test + parameter, which should be covered by a test case. In the + PairwiseStrategy, we are only trying to cover pairs of features, so the + tuples actually may contain only single feature or pair of features, but + the algorithm itself works with triplets, quadruples and so on. - The first value, expected to be less - The second value, expected to be greater - The message to display in case of failure - Array of objects to be used in formatting the message - + - Verifies that the first value is less than or equal to the second - value. If it is not, then an - is thrown. + Initializes a new instance of FeatureTuple class for a single feature. - The first value, expected to be less - The second value, expected to be greater - The message to display in case of failure + Single feature. - + - Verifies that the first value is less than or equal to the second - value. If it is not, then an - is thrown. + Initializes a new instance of FeatureTuple class for a pair of features. - The first value, expected to be less - The second value, expected to be greater + First feature. + Second feature. - + - Verifies that the first value is less than or equal to the second - value. If it is not, then an - is thrown. + TestCase represents a single test case covering a list of features. - The first value, expected to be less - The second value, expected to be greater - The message to display in case of failure - Array of objects to be used in formatting the message - + - Verifies that the first value is less than or equal to the second - value. If it is not, then an - is thrown. + Initializes a new instance of TestCaseInfo class. - The first value, expected to be less - The second value, expected to be greater - The message to display in case of failure + A number of features in the test case. - + - Verifies that the first value is less than or equal to the second - value. If it is not, then an - is thrown. + PairwiseTestCaseGenerator class implements an algorithm which generates + a set of test cases which covers all pairs of possible values of test + function. - The first value, expected to be less - The second value, expected to be greater + + + The algorithm starts with creating a set of all feature tuples which we + will try to cover (see method). This set + includes every single feature and all possible pairs of features. We + store feature tuples in the 3-D collection (where axes are "dimension", + "feature", and "all combinations which includes this feature"), and for + every two feature (e.g. "A" and "B") we generate both ("A", "B") and + ("B", "A") pairs. This data structure extremely reduces the amount of + time needed to calculate coverage for a single test case (this + calculation is the most time-consuming part of the algorithm). + + + Then the algorithm picks one tuple from the uncovered tuple, creates a + test case that covers this tuple, and then removes this tuple and all + other tuples covered by this test case from the collection of uncovered + tuples. + + + Picking a tuple to cover + + + There are no any special rules defined for picking tuples to cover. We + just pick them one by one, in the order they were generated. + + + Test generation + + + Test generation starts from creating a completely random test case which + covers, nevertheless, previously selected tuple. Then the algorithm + tries to maximize number of tuples which this test covers. + + + Test generation and maximization process repeats seven times for every + selected tuple and then the algorithm picks the best test case ("seven" + is a magic number which provides good results in acceptable time). + + Maximizing test coverage + + To maximize tests coverage, the algorithm walks thru the list of mutable + dimensions (mutable dimension is a dimension that are not included in + the previously selected tuple). Then for every dimension, the algorithm + walks thru the list of features and checks if this feature provides + better coverage than randomly selected feature, and if yes keeps this + feature. + + + This process repeats while it shows progress. If the last iteration + doesn't improve coverage, the process ends. + + + In addition, for better results, before start every iteration, the + algorithm "scrambles" dimensions - so for every iteration dimension + probes in a different order. + + - + - Verifies that the first value is less than or equal to the second - value. If it is not, then an - is thrown. + Creates a set of test cases for specified dimensions. - The first value, expected to be less - The second value, expected to be greater - The message to display in case of failure - Array of objects to be used in formatting the message + + An array which contains information about dimensions. Each element of + this array represents a number of features in the specific dimension. + + + A set of test cases. + - + - Verifies that the first value is less than or equal to the second - value. If it is not, then an - is thrown. + Gets the test cases generated by this strategy instance. - The first value, expected to be less - The second value, expected to be greater - The message to display in case of failure + A set of test cases. - + - Verifies that the first value is less than or equal to the second - value. If it is not, then an - is thrown. + ParameterDataSourceProvider supplies individual argument _values for + single parameters using attributes implementing IParameterDataSource. - The first value, expected to be less - The second value, expected to be greater - + - Verifies that the first value is less than or equal to the second - value. If it is not, then an - is thrown. + Determine whether any data is available for a parameter. - The first value, expected to be less - The second value, expected to be greater - The message to display in case of failure - Array of objects to be used in formatting the message + A ParameterInfo representing one + argument to a parameterized test + + True if any data is available, otherwise false. + - + - Verifies that the first value is less than or equal to the second - value. If it is not, then an - is thrown. + Return an IEnumerable providing data for use with the + supplied parameter. - The first value, expected to be less - The second value, expected to be greater - The message to display in case of failure + An IParameterInfo representing one + argument to a parameterized test + + An IEnumerable providing the required data + - + - Verifies that the first value is less than or equal to the second - value. If it is not, then an - is thrown. + SequentialStrategy creates test cases by using all of the + parameter data sources in parallel, substituting null + when any of them run out of data. - The first value, expected to be less - The second value, expected to be greater - + - Verifies that the first value is less than or equal to the second - value. If it is not, then an - is thrown. + Gets the test cases generated by the CombiningStrategy. - The first value, expected to be less - The second value, expected to be greater - The message to display in case of failure - Array of objects to be used in formatting the message + The test cases. - + - Verifies that the first value is less than or equal to the second - value. If it is not, then an - is thrown. + EventListenerTextWriter sends text output to the currently active + ITestEventListener in the form of a TestOutput object. If no event + listener is active in the contet, or if there is no context, + the output is forwarded to the supplied default writer. - The first value, expected to be less - The second value, expected to be greater - The message to display in case of failure - + - Verifies that the first value is less than or equal to the second - value. If it is not, then an - is thrown. + Construct an EventListenerTextWriter + + The name of the stream to use for events + The default writer to use if no listener is available + + + + Write a single char - The first value, expected to be less - The second value, expected to be greater - + - Verifies that the first value is less than or equal to the second - value. If it is not, then an - is thrown. + Write a string - The first value, expected to be less - The second value, expected to be greater - The message to display in case of failure - Array of objects to be used in formatting the message - + - Verifies that the first value is less than or equal to the second - value. If it is not, then an - is thrown. + Write a string followed by a newline - The first value, expected to be less - The second value, expected to be greater - The message to display in case of failure - + - Verifies that the first value is less than or equal to the second - value. If it is not, then an - is thrown. + Get the Encoding for this TextWriter - The first value, expected to be less - The second value, expected to be greater - + - Asserts that an object is contained in a list. + A utility class to create TestCommands - The expected object - The list to be examined - The message to display in case of failure - Array of objects to be used in formatting the message - + - Asserts that an object is contained in a list. + Gets the command to be executed before any of + the child tests are run. - The expected object - The list to be examined - The message to display in case of failure + A TestCommand - + - Asserts that an object is contained in a list. + Gets the command to be executed after all of the + child tests are run. - The expected object - The list to be examined + A TestCommand - + - Helper for Assert.AreEqual(double expected, double actual, ...) - allowing code generation to work consistently. + Creates a test command for use in running this test. - The expected value - The actual value - The maximum acceptable difference between the - the expected and the actual - The message to display in case of failure - Array of objects to be used in formatting the message + - + - Gets the number of assertions executed so far and - resets the counter to zero. + Creates a command for skipping a test. The result returned will + depend on the test RunState. - + - AssertionHelper is an optional base class for user tests, - allowing the use of shorter names for constraints and - asserts and avoiding conflict with the definition of - , from which it inherits much of its - behavior, in certain mock object frameworks. + Builds the set up tear down list. + Type of the fixture. + Type of the set up attribute. + Type of the tear down attribute. + A list of SetUpTearDownItems - + - Helper class with properties and methods that supply - a number of constraints used in Asserts. + An IWorkItemDispatcher handles execution of work items. - + - Returns a ConstraintExpression, which will apply - the following constraint to all members of a collection, - succeeding only if a specified number of them succeed. + Dispatch a single work item for execution. The first + work item dispatched is saved as the top-level + work item and used when stopping the run. + The item to dispatch - + - Returns a new PropertyConstraintExpression, which will either - test for the existence of the named property on the object - being tested or apply any following constraint to that property. + Cancel the ongoing run completely. + If no run is in process, the call has no effect. + true if the IWorkItemDispatcher should abort all currently running WorkItems, false if it should allow all currently running WorkItems to complete - + - Returns a new AttributeConstraint checking for the - presence of a particular attribute on an object. + SimpleWorkItemDispatcher handles execution of WorkItems by + directly executing them. It is provided so that a dispatcher + is always available in the context, thereby simplifying the + code needed to run child tests. - + - Returns a new AttributeConstraint checking for the - presence of a particular attribute on an object. + Dispatch a single work item for execution. The first + work item dispatched is saved as the top-level + work item and a thread is created on which to + run it. Subsequent calls come from the top level + item or its descendants on the proper thread. + The item to dispatch - + - Returns a constraint that tests two items for equality + Cancel (abort or stop) the ongoing run. + If no run is in process, the call has no effect. + true if the run should be aborted, false if it should allow its currently running test to complete - + - Returns a constraint that tests that two references are the same object + The TextCapture class intercepts console output and writes it + to the current execution context, if one is present on the thread. + If no execution context is found, the output is written to a + default destination, normally the original destination of the + intercepted output. - + - Returns a constraint that tests whether the - actual value is greater than the suppled argument + Construct a TextCapture object + The default destination for non-intercepted output - + - Returns a constraint that tests whether the - actual value is greater than or equal to the suppled argument + Gets the Encoding in use by this TextWriter - + - Returns a constraint that tests whether the - actual value is greater than or equal to the suppled argument + Writes a single character + The char to write - + - Returns a constraint that tests whether the - actual value is less than the suppled argument + Writes a string + The string to write - + - Returns a constraint that tests whether the - actual value is less than or equal to the suppled argument + Writes a string followed by a line terminator + The string to write - + - Returns a constraint that tests whether the - actual value is less than or equal to the suppled argument + A CompositeWorkItem represents a test suite and + encapsulates the execution of the suite as well + as all its child tests. - + - Returns a constraint that tests whether the actual - value is of the exact type supplied as an argument. + List of Child WorkItems - + - Returns a constraint that tests whether the actual - value is of the exact type supplied as an argument. + A count of how many tests in the work item have a value for the Order Property - + - Returns a constraint that tests whether the actual value - is of the type supplied as an argument or a derived type. + Construct a CompositeWorkItem for executing a test suite + using a filter to select child tests. + The TestSuite to be executed + A filter used to select child tests - + - Returns a constraint that tests whether the actual value - is of the type supplied as an argument or a derived type. + Method that actually performs the work. Overridden + in CompositeWorkItem to do setup, run all child + items and then do teardown. - + - Returns a constraint that tests whether the actual value - is of the type supplied as an argument or a derived type. + Compares two objects and returns a value indicating whether one is less than, equal to, or greater than the other. + + A signed integer that indicates the relative values of and , as shown in the following table.Value Meaning Less than zero is less than .Zero equals .Greater than zero is greater than . + + The first object to compare.The second object to compare. - + - Returns a constraint that tests whether the actual value - is of the type supplied as an argument or a derived type. + Sorts tests under this suite. - + - Returns a constraint that tests whether the actual value - is assignable from the type supplied as an argument. + Cancel (abort or stop) a CompositeWorkItem and all of its children + true if the CompositeWorkItem and all of its children should be aborted, false if it should allow all currently running tests to complete - + - Returns a constraint that tests whether the actual value - is assignable from the type supplied as an argument. + A simplified implementation of .NET 4 CountdownEvent + for use in earlier versions of .NET. Only the methods + used by NUnit are implemented. - + - Returns a constraint that tests whether the actual value - is assignable from the type supplied as an argument. + Construct a CountdownEvent + The initial count - + - Returns a constraint that tests whether the actual value - is assignable from the type supplied as an argument. + Gets the initial count established for the CountdownEvent - + - Returns a constraint that tests whether the actual value - is a collection containing the same elements as the - collection supplied as an argument. + Gets the current count remaining for the CountdownEvent - + - Returns a constraint that tests whether the actual value - is a subset of the collection supplied as an argument. + Decrement the count by one - + - Returns a new CollectionContainsConstraint checking for the - presence of a particular object in the collection. + Block the thread until the count reaches zero - + - Returns a new CollectionContainsConstraint checking for the - presence of a particular object in the collection. + A SimpleWorkItem represents a single test case and is + marked as completed immediately upon execution. This + class is also used for skipped or ignored test suites. - + - Returns a new ContainsConstraint. This constraint - will, in turn, make use of the appropriate second-level - constraint, depending on the type of the actual argument. - This overload is only used if the item sought is a string, - since any other type implies that we are looking for a - collection member. + Construct a simple work item for a test. + The test to be executed + The filter used to select this test - + - Returns a constraint that succeeds if the actual - value contains the substring supplied as an argument. + Method that performs actually performs the work. - + + + A WorkItem may be an individual test case, a fixture or + a higher level grouping of tests. All WorkItems inherit + from the abstract WorkItem class, which uses the template + pattern to allow derived classes to perform work in + whatever way is needed. + + A WorkItem is created with a particular TestExecutionContext + and is responsible for re-establishing that context in the + current thread before it begins or resumes execution. + + + - Returns a constraint that succeeds if the actual - value contains the substring supplied as an argument. + Creates a work item. + The test for which this WorkItem is being created. + The filter to be used in selecting any child Tests. + - + - Returns a constraint that fails if the actual - value contains the substring supplied as an argument. + Construct a WorkItem for a particular test. + The test that the WorkItem will run - + - Returns a constraint that succeeds if the actual - value starts with the substring supplied as an argument. + Initialize the TestExecutionContext. This must be done + before executing the WorkItem. + + Originally, the context was provided in the constructor + but delaying initialization of the context until the item + is about to be dispatched allows changes in the parent + context during OneTimeSetUp to be reflected in the child. + + The TestExecutionContext to use - + - Returns a constraint that succeeds if the actual - value starts with the substring supplied as an argument. + Event triggered when the item is complete - + - Returns a constraint that fails if the actual - value starts with the substring supplied as an argument. + Gets the current state of the WorkItem - + - Returns a constraint that succeeds if the actual - value ends with the substring supplied as an argument. + The test being executed by the work item - + - Returns a constraint that succeeds if the actual - value ends with the substring supplied as an argument. + The execution context - + - Returns a constraint that fails if the actual - value ends with the substring supplied as an argument. + The unique id of the worker executing this item. - + - Returns a constraint that succeeds if the actual - value matches the regular expression supplied as an argument. + The test actions to be performed before and after this test - + - Returns a constraint that succeeds if the actual - value matches the regular expression supplied as an argument. + The test result - + - Returns a constraint that fails if the actual - value matches the pattern supplied as an argument. + Execute the current work item, including any + child work items. - + - Returns a constraint that tests whether the path provided - is the same as an expected path after canonicalization. + Cancel (abort or stop) a WorkItem + true if the WorkItem should be aborted, false if it should run to completion - + - Returns a constraint that tests whether the path provided - is the same path or under an expected path after canonicalization. + Method that performs actually performs the work. It should + set the State to WorkItemState.Complete when done. - + - Returns a constraint that tests whether the path provided - is the same path or under an expected path after canonicalization. + Method called by the derived class when all work is complete - + - Returns a constraint that tests whether the actual value falls - within a specified range. + The current state of a work item - + - Returns a ConstraintExpression that negates any - following constraint. + Ready to run or continue - + - Returns a ConstraintExpression that negates any - following constraint. + Work Item is executing - + - Returns a ConstraintExpression, which will apply - the following constraint to all members of a collection, - succeeding if all of them succeed. + Complete - + - Returns a ConstraintExpression, which will apply - the following constraint to all members of a collection, - succeeding if at least one of them succeeds. + A base class for multi-part filters - + - Returns a ConstraintExpression, which will apply - the following constraint to all members of a collection, - succeeding if all of them fail. + Constructs an empty CompositeFilter - + - Returns a new ConstraintExpression, which will apply the following - constraint to the Length property of the object being tested. + Constructs a CompositeFilter from an array of filters + - + - Returns a new ConstraintExpression, which will apply the following - constraint to the Count property of the object being tested. + Adds a filter to the list of filters + The filter to be added - + - Returns a new ConstraintExpression, which will apply the following - constraint to the Message property of the object being tested. + Return a list of the composing filters. - + - Returns a new ConstraintExpression, which will apply the following - constraint to the InnerException property of the object being tested. + Checks whether the CompositeFilter is matched by a test. + The test to be matched - + - Returns a constraint that tests for null + Checks whether the CompositeFilter is matched by a test. + The test to be matched - + - Returns a constraint that tests for True + Checks whether the CompositeFilter is explicit matched by a test. + The test to be matched - + - Returns a constraint that tests for False + Adds an XML node + Parent node + True if recursive + The added XML node - + - Returns a constraint that tests for a positive value + Gets the element name + Element name - + - Returns a constraint that tests for a negative value + PropertyFilter is able to select or exclude tests + based on their properties. + - + - Returns a constraint that tests for NaN + Construct a PropertyFilter using a property name and expected value + A property name + The expected value of the property - + - Returns a constraint that tests for empty + Check whether the filter matches a test + The test to be matched + - + - Returns a constraint that tests whether a collection - contains all unique items. + Adds an XML node + Parent node + True if recursive + The added XML node - + - Returns a constraint that tests whether an object graph is serializable in binary format. + Gets the element name + Element name - + - Returns a constraint that tests whether an object graph is serializable in xml format. + TestName filter selects tests based on their Name - + - Returns a constraint that tests whether a collection is ordered + Construct a TestNameFilter for a single name + The name the filter will recognize. - + - Apply a constraint to an actual value, succeeding if the constraint - is satisfied and throwing an assertion exception on failure. Works - identically to Assert.That. + Match a test against a single value. - The actual value to test - A Constraint to be applied - + - Apply a constraint to an actual value, succeeding if the constraint - is satisfied and throwing an assertion exception on failure. Works - identically to Assert.That. + Gets the element name - The actual value to test - A Constraint to be applied - The message to be displayed in case of failure + Element name - + - Apply a constraint to an actual value, succeeding if the constraint - is satisfied and throwing an assertion exception on failure. Works - identically to Assert.That. + ClassName filter selects tests based on the class FullName - The actual value to test - A Constraint to be applied - The message to be displayed in case of failure - Arguments to use in formatting the message - + - Asserts that a condition is true. If the condition is false the method throws - an . Works Identically to - . - - The evaluated condition - The message to display if the condition is false - Arguments to be used in formatting the message + Construct a FullNameFilter for a single name + + The name the filter will recognize. - + - Asserts that a condition is true. If the condition is false the method throws - an . Works Identically to - . + Match a test against a single value. - The evaluated condition - The message to display if the condition is false - + - Asserts that a condition is true. If the condition is false the method throws - an . Works Identically to . + Gets the element name - The evaluated condition + Element name - + - Apply a constraint to an actual value, succeeding if the constraint - is satisfied and throwing an assertion exception on failure. + FullName filter selects tests based on their FullName - A Constraint expression to be applied - An ActualValueDelegate returning the value to be tested - + - Apply a constraint to an actual value, succeeding if the constraint - is satisfied and throwing an assertion exception on failure. + Construct a MethodNameFilter for a single name - A Constraint expression to be applied - An ActualValueDelegate returning the value to be tested - The message that will be displayed on failure + The name the filter will recognize. - + - Apply a constraint to an actual value, succeeding if the constraint - is satisfied and throwing an assertion exception on failure. + Match a test against a single value. - An ActualValueDelegate returning the value to be tested - A Constraint expression to be applied - The message that will be displayed on failure - Arguments to be used in formatting the message - + - Apply a constraint to a referenced value, succeeding if the constraint - is satisfied and throwing an assertion exception on failure. + Gets the element name - The actual value to test - A Constraint to be applied + Element name - + - Apply a constraint to a referenced value, succeeding if the constraint - is satisfied and throwing an assertion exception on failure. + IdFilter selects tests based on their id - The actual value to test - A Constraint to be applied - The message that will be displayed on failure - + - Apply a constraint to a referenced value, succeeding if the constraint - is satisfied and throwing an assertion exception on failure. + Construct an IdFilter for a single value - The actual value to test - A Constraint to be applied - The message that will be displayed on failure - Arguments to be used in formatting the message + The id the filter will recognize. - + - Asserts that the code represented by a delegate throws an exception - that satisfies the constraint provided. + Match a test against a single value. - A TestDelegate to be executed - A ThrowsConstraint used in the test - + - Returns a ListMapper based on a collection. + Gets the element name - The original collection - + Element name - + - Provides static methods to express the assumptions - that must be met for a test to give a meaningful - result. If an assumption is not met, the test - should produce an inconclusive result. + ValueMatchFilter selects tests based on some value, which + is expected to be contained in the test. - + - The Equals method throws an AssertionException. This is done - to make sure there is no mistake by calling this function. + Returns the value matched by the filter - used for testing - - - + - override the default ReferenceEquals to throw an AssertionException. This - implementation makes sure there is no mistake in calling this function - as part of Assert. + Indicates whether the value is a regular expression - - - + - Apply a constraint to an actual value, succeeding if the constraint - is satisfied and throwing an InconclusiveException on failure. + Construct a ValueMatchFilter for a single value. - A Constraint expression to be applied - The actual value to test + The value to be included. - + - Apply a constraint to an actual value, succeeding if the constraint - is satisfied and throwing an InconclusiveException on failure. + Match the input provided by the derived class - A Constraint expression to be applied - The actual value to test - The message that will be displayed on failure + The value to be matchedT + True for a match, false otherwise. - + - Apply a constraint to an actual value, succeeding if the constraint - is satisfied and throwing an InconclusiveException on failure. + Adds an XML node - A Constraint expression to be applied - The actual value to test - The message that will be displayed on failure - Arguments to be used in formatting the message + Parent node + True if recursive + The added XML node - + - Asserts that a condition is true. If the condition is false the method throws - an . - - The evaluated condition - The message to display if the condition is false - Arguments to be used in formatting the message + Gets the element name + + Element name - + - Asserts that a condition is true. If the condition is false the method throws - an . + Combines multiple filters so that a test must pass all + of them in order to pass this filter. - The evaluated condition - The message to display if the condition is false - + - Asserts that a condition is true. If the condition is false the - method throws an . + Constructs an empty AndFilter - The evaluated condition - + - Apply a constraint to an actual value, succeeding if the constraint - is satisfied and throwing an InconclusiveException on failure. + Constructs an AndFilter from an array of filters - A Constraint expression to be applied - An ActualValueDelegate returning the value to be tested + - + - Apply a constraint to an actual value, succeeding if the constraint - is satisfied and throwing an InconclusiveException on failure. + Checks whether the AndFilter is matched by a test - A Constraint expression to be applied - An ActualValueDelegate returning the value to be tested - The message that will be displayed on failure + The test to be matched + True if all the component filters pass, otherwise false - + - Apply a constraint to an actual value, succeeding if the constraint - is satisfied and throwing an InconclusiveException on failure. + Checks whether the AndFilter is matched by a test - An ActualValueDelegate returning the value to be tested - A Constraint expression to be applied - The message that will be displayed on failure - Arguments to be used in formatting the message + The test to be matched + True if all the component filters match, otherwise false - + - Apply a constraint to a referenced value, succeeding if the constraint - is satisfied and throwing an InconclusiveException on failure. + Checks whether the AndFilter is explicit matched by a test. - A Constraint expression to be applied - The actual value to test + The test to be matched + True if all the component filters explicit match, otherwise false - + - Apply a constraint to a referenced value, succeeding if the constraint - is satisfied and throwing an InconclusiveException on failure. + Gets the element name - A Constraint expression to be applied - The actual value to test - The message that will be displayed on failure + Element name - + - Apply a constraint to a referenced value, succeeding if the constraint - is satisfied and throwing an InconclusiveException on failure. + CategoryFilter is able to select or exclude tests + based on their categories. - A Constraint expression to be applied - The actual value to test - The message that will be displayed on failure - Arguments to be used in formatting the message + - + - Asserts that the code represented by a delegate throws an exception - that satisfies the constraint provided. + Construct a CategoryFilter using a single category name - A TestDelegate to be executed - A ThrowsConstraint used in the test + A category name - + - The different targets a test action attribute can be applied to + Check whether the filter matches a test + The test to be matched + - + - Default target, which is determined by where the action attribute is attached + Gets the element name + Element name - + - Target a individual test case + NotFilter negates the operation of another filter - + - Target a suite of test cases + Construct a not filter on another filter + The filter to be negated - + - Waits for pending asynchronous operations to complete, if appropriate, - and returns a proper result of the invocation by unwrapping task results + Gets the base filter - The raw result of the method invocation - The unwrapped result, if necessary - + - Attribute used to apply a category to a test + Determine if a particular test passes the filter criteria. The default + implementation checks the test itself, its parents and any descendants. + + Derived classes may override this method or any of the Match methods + to change the behavior of the filter. + The test to which the filter is applied + True if the test passes the filter, otherwise false - + - The name of the category + Check whether the filter matches a test + The test to be matched + True if it matches, otherwise false - + - Construct attribute for a given category based on - a name. The name may not contain the characters ',', - '+', '-' or '!'. However, this is not checked in the - constructor since it would cause an error to arise at - as the test was loaded without giving a clear indication - of where the problem is located. The error is handled - in NUnitFramework.cs by marking the test as not - runnable. + Determine if a test matches the filter expicitly. That is, it must + be a direct match of the test itself or one of it's children. - The name of the category + The test to which the filter is applied + True if the test matches the filter explicityly, otherwise false - + - Protected constructor uses the Type name as the name - of the category. + Adds an XML node + Parent node + True if recursive + The added XML node - + - The name of the category + Combines multiple filters so that a test must pass one + of them in order to pass this filter. - + - Used to mark a field for use as a datapoint when executing a theory - within the same fixture that requires an argument of the field's Type. + Constructs an empty OrFilter - + - Used to mark an array as containing a set of datapoints to be used - executing a theory within the same fixture that requires an argument - of the Type of the array elements. + Constructs an AndFilter from an array of filters + - + - Attribute used to provide descriptive text about a - test case or fixture. + Checks whether the OrFilter is matched by a test + The test to be matched + True if any of the component filters pass, otherwise false - + - Construct the attribute + Checks whether the OrFilter is matched by a test - Text describing the test + The test to be matched + True if any of the component filters match, otherwise false - + - Gets the test description + Checks whether the OrFilter is explicit matched by a test + The test to be matched + True if any of the component filters explicit match, otherwise false - + - Enumeration indicating how the expected message parameter is to be used + Gets the element name + Element name - - Expect an exact match + + + FullName filter selects tests based on their FullName + - - Expect a message containing the parameter string + + + Construct a FullNameFilter for a single name + + The name the filter will recognize. - - Match the regular expression provided as a parameter + + + Match a test against a single value. + - - Expect a message that starts with the parameter string + + + Gets the element name + + Element name - + - ExpectedExceptionAttribute + Interface for logging within the engine - - + - Constructor for a non-specific exception + Logs the specified message at the error level. + The message. - + - Constructor for a given type of exception + Logs the specified message at the error level. - The type of the expected exception + The message. + The arguments. - + - Constructor for a given exception name + Logs the specified message at the warning level. - The full name of the expected exception + The message. - + - Gets or sets the expected exception type + Logs the specified message at the warning level. + The message. + The arguments. - + - Gets or sets the full Type name of the expected exception + Logs the specified message at the info level. + The message. - + - Gets or sets the expected message text + Logs the specified message at the info level. + The message. + The arguments. - + - Gets or sets the user message displayed in case of failure + Logs the specified message at the debug level. + The message. - + - Gets or sets the type of match to be performed on the expected message + Logs the specified message at the debug level. + The message. + The arguments. - + - Gets the name of a method to be used as an exception handler + InternalTrace provides facilities for tracing the execution + of the NUnit framework. Tests and classes under test may make use + of Console writes, System.Diagnostics.Trace or various loggers and + NUnit itself traps and processes each of them. For that reason, a + separate internal trace is needed. + + Note: + InternalTrace uses a global lock to allow multiple threads to write + trace messages. This can easily make it a bottleneck so it must be + used sparingly. Keep the trace Level as low as possible and only + insert InternalTrace writes where they are needed. + TODO: add some buffering and a separate writer thread as an option. + TODO: figure out a way to turn on trace in specific classes only. - + - ExplicitAttribute marks a test or test fixture so that it will - only be run if explicitly executed from the gui or command line - or if it is included by use of a filter. The test will not be - run simply because an enclosing suite is run. + Gets a flag indicating whether the InternalTrace is initialized - + - Default constructor + Initialize the internal trace facility using the name of the log + to be written to and the trace level. + The log name + The trace level - + - Constructor with a reason + Initialize the internal trace using a provided TextWriter and level - The reason test is marked explicit + A TextWriter + The InternalTraceLevel - + - The reason test is marked explicit + Get a named Logger + - + - Attribute used to mark a test that is to be ignored. - Ignored tests result in a warning message when the - tests are run. + Get a logger named for a particular Type. - + - Constructs the attribute without giving a reason - for ignoring the test. + InternalTraceLevel is an enumeration controlling the + level of detailed presented in the internal log. - + - Constructs the attribute giving a reason for ignoring the test + Use the default settings as specified by the user. - The reason for ignoring the test - + - The reason for ignoring a test + Do not display any trace messages - + - Abstract base for Attributes that are used to include tests - in the test run based on environmental settings. + Display Error messages only - + - Constructor with no included items specified, for use - with named property syntax. + Display Warning level and higher messages - + - Constructor taking one or more included items + Display informational and higher messages - Comma-delimited list of included items - + - Name of the item that is needed in order for - a test to run. Multiple itemss may be given, - separated by a comma. + Display debug messages and higher - i.e. all messages - + - Name of the item to be excluded. Multiple items - may be given, separated by a comma. + Display debug messages and higher - i.e. all messages - + - The reason for including or excluding the test + A trace listener that writes to a separate file per domain + and process using it. - + - PlatformAttribute is used to mark a test fixture or an - individual method as applying to a particular platform only. + Construct an InternalTraceWriter that writes to a file. + Path to the file to use - + - Constructor with no platforms specified, for use - with named property syntax. + Construct an InternalTraceWriter that writes to a + TextWriter provided by the caller. + - + - Constructor taking one or more platforms + Returns the character encoding in which the output is written. - Comma-deliminted list of platforms + The character encoding in which the output is written. - + - CultureAttribute is used to mark a test fixture or an - individual method as applying to a particular Culture only. + Writes a character to the text string or stream. + The character to write to the text stream. - + - Constructor with no cultures specified, for use - with named property syntax. + Writes a string to the text string or stream. + The string to write. - + - Constructor taking one or more cultures + Writes a string followed by a line terminator to the text string or stream. - Comma-deliminted list of cultures + The string to write. If is null, only the line terminator is written. - + - Marks a test to use a combinatorial join of any argument data - provided. NUnit will create a test case for every combination of - the arguments provided. This can result in a large number of test - cases and so should be used judiciously. This is the default join - type, so the attribute need not be used except as documentation. + Releases the unmanaged resources used by the and optionally releases the managed resources. + true to release both managed and unmanaged resources; false to release only unmanaged resources. - + - PropertyAttribute is used to attach information to a test as a name/value pair.. + Clears all buffers for the current writer and causes any buffered data to be written to the underlying device. - + - Construct a PropertyAttribute with a name and string value + Provides internal logging to the NUnit framework - The name of the property - The property value - + - Construct a PropertyAttribute with a name and int value + Initializes a new instance of the class. - The name of the property - The property value + The name. + The log level. + The writer where logs are sent. - + - Construct a PropertyAttribute with a name and double value + Logs the message at error level. - The name of the property - The property value + The message. - + - Constructor for derived classes that set the - property dictionary directly. + Logs the message at error level. + + The message. + The message arguments. + + + + Logs the message at warm level. + + The message. + + + + Logs the message at warning level. + The message. + The message arguments. - + - Constructor for use by derived classes that use the - name of the type as the property name. Derived classes - must ensure that the Type of the property value is - a standard type supported by the BCL. Any custom - types will cause a serialization Exception when - in the client. + Logs the message at info level. + The message. - + - Gets the property dictionary for this attribute + Logs the message at info level. + The message. + The message arguments. - + - Default constructor + Logs the message at debug level. + The message. - + - Marks a test to use pairwise join of any argument data provided. - NUnit will attempt too excercise every pair of argument values at - least once, using as small a number of test cases as it can. With - only two arguments, this is the same as a combinatorial join. + Logs the message at debug level. + The message. + The message arguments. - + - Default constructor + The MethodWrapper class wraps a MethodInfo so that it may + be used in a platform-independent manner. - + - Marks a test to use a sequential join of any argument data - provided. NUnit will use arguements for each parameter in - sequence, generating test cases up to the largest number - of argument values provided and using null for any arguments - for which it runs out of values. Normally, this should be - used with the same number of arguments for each parameter. + Construct a MethodWrapper for a Type and a MethodInfo. - + - Default constructor + Construct a MethodInfo for a given Type and method name. - + - Summary description for MaxTimeAttribute. + Gets the Type from which this method was reflected. - + - Construct a MaxTimeAttribute, given a time in milliseconds. + Gets the MethodInfo for this method. - The maximum elapsed time in milliseconds - + - RandomAttribute is used to supply a set of random values - to a single parameter of a parameterized test. + Gets the name of the method. - + - ValuesAttribute is used to provide literal arguments for - an individual parameter of a test. + Gets a value indicating whether the method is abstract. - + - Abstract base class for attributes that apply to parameters - and supply data for the parameter. + Gets a value indicating whether the method is public. - + - Gets the data to be provided to the specified parameter + Gets a value indicating whether the method contains unassigned generic type parameters. - + - The collection of data to be returned. Must - be set by any derived attribute classes. - We use an object[] so that the individual - elements may have their type changed in GetData - if necessary. + Gets a value indicating whether the method is a generic method. - + - Construct with one argument + Gets a value indicating whether the MethodInfo represents the definition of a generic method. - - + - Construct with two arguments + Gets the return Type of the method. - - - + - Construct with three arguments + Gets the parameters of the method. - - - + - + - Construct with an array of arguments + Returns the Type arguments of a generic method or the Type parameters of a generic method definition. - - + - Get the collection of values to be used as arguments + Replaces the type parameters of the method with the array of types provided and returns a new IMethodInfo. + The type arguments to be used + A new IMethodInfo with the type arguments replaced - + - Construct a set of doubles from 0.0 to 1.0, - specifying only the count. + Returns an array of custom attributes of the specified type applied to this method - - + - Construct a set of doubles from min to max + Gets a value indicating whether one or more attributes of the spcified type are defined on the method. - - - - + - Construct a set of ints from min to max + Invokes the method, converting any TargetInvocationException to an NUnitException. - - - + The object on which to invoke the method + The argument list for the method + The return value from the invoked method - + - Get the collection of values to be used as arguments + Override ToString() so that error messages in NUnit's own tests make sense - + - RangeAttribute is used to supply a range of values to an - individual parameter of a parameterized test. + The ParameterWrapper class wraps a ParameterInfo so that it may + be used in a platform-independent manner. - + - Construct a range of ints using default step of 1 + Construct a ParameterWrapper for a given method and parameter - - + + - + - Construct a range of ints specifying the step size + Gets a value indicating whether the parameter is optional - - - - + - Construct a range of longs + Gets an IMethodInfo representing the method for which this is a parameter. - - - - + - Construct a range of doubles + Gets the underlying ParameterInfo - - - - + - Construct a range of floats + Gets the Type of the parameter - - - - + - RepeatAttribute may be applied to test case in order - to run it multiple times. + Returns an array of custom attributes of the specified type applied to this method - + - Construct a RepeatAttribute + Gets a value indicating whether one or more attributes of the specified type are defined on the parameter. - The number of times to run the test - + - RequiredAddinAttribute may be used to indicate the names of any addins - that must be present in order to run some or all of the tests in an - assembly. If the addin is not loaded, the entire assembly is marked - as NotRunnable. + TestNameGenerator is able to create test names according to + a coded pattern. - + - Initializes a new instance of the class. + Default pattern used to generate names - The required addin. - + - Gets the name of required addin. + Construct a TestNameGenerator - The required addin name. - + - Summary description for SetCultureAttribute. + Construct a TestNameGenerator + The pattern used by this generator. - + - Construct given the name of a culture + Get the display name for a TestMethod and it's arguments - + A TestMethod + The display name - + - Summary description for SetUICultureAttribute. + Get the display name for a TestMethod and it's arguments + A TestMethod + Arguments to be used + The display name - + - Construct given the name of a culture + The TypeWrapper class wraps a Type so it may be used in + a platform-independent manner. - - + - SetUpAttribute is used in a TestFixture to identify a method - that is called immediately before each test is run. It is - also used in a SetUpFixture to identify the method that is - called once, before any of the subordinate tests are run. + Construct a TypeWrapper for a specified Type. - + - Attribute used to mark a class that contains one-time SetUp - and/or TearDown methods that apply to all the tests in a - namespace or an assembly. + Gets the underlying Type on which this TypeWrapper is based. - + - Attribute used to mark a static (shared in VB) property - that returns a list of tests. + Gets the base type of this type as an ITypeInfo - + - Attribute used in a TestFixture to identify a method that is - called immediately after each test is run. It is also used - in a SetUpFixture to identify the method that is called once, - after all subordinate tests have run. In either case, the method - is guaranteed to be called, even if an exception is thrown. + Gets the Name of the Type - + - Provide actions to execute before and after tests. + Gets the FullName of the Type - + - When implemented by an attribute, this interface implemented to provide actions to execute before and after tests. + Gets the assembly in which the type is declared - + - Executed before each test is run + Gets the namespace of the Type - Provides details about the test that is going to be run. - + - Executed after each test is run + Gets a value indicating whether the type is abstract. - Provides details about the test that has just been run. - + - Provides the target for the action attribute + Gets a value indicating whether the Type is a generic Type - The target for the action attribute - + - Method called before each test + Returns true if the Type wrapped is T - Info about the test to be run - + - Method called after each test + Gets a value indicating whether the Type has generic parameters that have not been replaced by specific Types. - Info about the test that was just run - + - Gets or sets the ActionTargets for this attribute + Gets a value indicating whether the Type is a generic Type definition - + - Adding this attribute to a method within a - class makes the method callable from the NUnit test runner. There is a property - called Description which is optional which you can provide a more detailed test - description. This class cannot be inherited. + Gets a value indicating whether the type is sealed. - - - [TestFixture] - public class Fixture - { - [Test] - public void MethodToTest() - {} - - [Test(Description = "more detailed description")] - publc void TestDescriptionMethod() - {} - } - - - + - Descriptive text for this test + Gets a value indicating whether this type represents a static class. - + - TestCaseAttribute is used to mark parameterized test cases - and provide them with their arguments. + Get the display name for this type - + - The ITestCaseData interface is implemented by a class - that is able to return complete testcases for use by - a parameterized test method. - - NOTE: This interface is used in both the framework - and the core, even though that results in two different - types. However, sharing the source code guarantees that - the various implementations will be compatible and that - the core is able to reflect successfully over the - framework implementations of ITestCaseData. + Get the display name for an object of this type, constructed with the specified args. - + - Gets the argument list to be provided to the test + Returns a new ITypeInfo representing an instance of this generic Type using the supplied Type arguments - + - Gets the expected result + Returns a Type representing a generic type definition from which this Type can be constructed. - + - Indicates whether a result has been specified. - This is necessary because the result may be - null, so it's value cannot be checked. + Returns an array of custom attributes of the specified type applied to this type - + - Gets the expected exception Type + Returns a value indicating whether the type has an attribute of the specified type. + + + - + - Gets the FullName of the expected exception + Returns a flag indicating whether this type has a method with an attribute of the specified type. + + - + - Gets the name to be used for the test + Returns an array of IMethodInfos for methods of this Type + that match the specified flags. - + - Gets the description of the test + Gets the public constructor taking the specified argument Types - + - Gets a value indicating whether this is ignored. + Returns a value indicating whether this Type has a public constructor taking the specified argument Types. - true if ignored; otherwise, false. - + - Gets a value indicating whether this is explicit. + Construct an object of this Type, using the specified arguments. - true if explicit; otherwise, false. - + - Gets the ignore reason. + Override ToString() so that error messages in NUnit's own tests make sense - The ignore reason. - + - Construct a TestCaseAttribute with a list of arguments. - This constructor is not CLS-Compliant + SetUpTearDownItem holds the setup and teardown methods + for a single level of the inheritance hierarchy. - - + - Construct a TestCaseAttribute with a single argument + Construct a SetUpTearDownNode - + A list of setup methods for this level + A list teardown methods for this level - + - Construct a TestCaseAttribute with a two arguments + Returns true if this level has any methods at all. + This flag is used to discard levels that do nothing. - - - + - Construct a TestCaseAttribute with a three arguments + Run SetUp on this level. - - - + The execution context to use for running. - + - Gets the list of arguments to a test case + Run TearDown for this level. + - + - Gets or sets the expected result. Use - ExpectedResult by preference. + TestActionCommand runs the BeforeTest actions for a test, + then runs the test and finally runs the AfterTestActions. - The result. - + - Gets or sets the expected result. + Initializes a new instance of the class. - The result. + The inner command. - + - Gets a flag indicating whether an expected - result has been set. + Runs the test, saving a TestResult in the supplied TestExecutionContext. + The context in which the test should run. + A TestResult - + - Gets a list of categories associated with this test; + TestActionItem represents a single execution of an + ITestAction. It is used to track whether the BeforeTest + method has been called and suppress calling the + AfterTest method if it has not. - + - Gets or sets the category associated with this test. - May be a single category or a comma-separated list. + Construct a TestActionItem + The ITestAction to be included - + - Gets or sets the expected exception. + Run the BeforeTest method of the action and remember that it has been run. - The expected exception. + The test to which the action applies - + - Gets or sets the name the expected exception. + Run the AfterTest action, but only if the BeforeTest + action was actually run. - The expected name of the exception. + The test to which the action applies - + - Gets or sets the expected message of the expected exception + ContextSettingsCommand applies specified changes to the + TestExecutionContext prior to running a test. No special + action is needed after the test runs, since the prior + context will be restored automatically. - The expected message of the exception. - + - Gets or sets the type of match to be performed on the expected message + TODO: Documentation needed for class - + + TODO: Documentation needed for field + + - Gets or sets the description. + TODO: Documentation needed for constructor - The description. + - + - Gets or sets the name of the test. + TODO: Documentation needed for class - The name of the test. - + - Gets or sets the ignored status of the test + Initializes a new instance of the class. + The inner command. + The max time allowed in milliseconds - + - Gets or sets the ignored status of the test + Runs the test, saving a TestResult in the supplied TestExecutionContext + The context in which the test should run. + A TestResult - + - Gets or sets the explicit status of the test + OneTimeSetUpCommand runs any one-time setup methods for a suite, + constructing the user test object if necessary. - + - Gets or sets the reason for not running the test + Constructs a OneTimeSetUpCommand for a suite + The suite to which the command applies + A SetUpTearDownList for use by the command + A List of TestActionItems to be run after Setup - + - Gets or sets the reason for not running the test. - Set has the side effect of marking the test as ignored. + Overridden to run the one-time setup for a suite. - The ignore reason. + The TestExecutionContext to be used. + A TestResult - + - FactoryAttribute indicates the source to be used to - provide test cases for a test method. + OneTimeTearDownCommand performs any teardown actions + specified for a suite and calls Dispose on the user + test object, if any. - + - Construct with the name of the data source, which must - be a property, field or method of the test class itself. + Construct a OneTimeTearDownCommand - An array of the names of the factories that will provide data + The test suite to which the command applies + A SetUpTearDownList for use by the command + A List of TestActionItems to be run before teardown. - + - Construct with a Type, which must implement IEnumerable + Overridden to run the teardown methods specified on the test. - The Type that will provide data + The TestExecutionContext to be used. + A TestResult - + - Construct with a Type and name. - that don't support params arrays. + SetUpTearDownCommand runs any SetUp methods for a suite, + runs the test and then runs any TearDown methods. - The Type that will provide data - The name of the method, property or field that will provide data - + - The name of a the method, property or fiend to be used as a source + Initializes a new instance of the class. + The inner command. - + - A Type to be used as a source + Runs the test, saving a TestResult in the supplied TestExecutionContext. + The context in which the test should run. + A TestResult - + - Gets or sets the category associated with this test. - May be a single category or a comma-separated list. + TODO: Documentation needed for class - - - [TestFixture] - public class ExampleClass - {} - - - + - Default constructor + Initializes a new instance of the class. + The test being skipped. - + - Construct with a object[] representing a set of arguments. - In .NET 2.0, the arguments may later be separated into - type arguments and constructor arguments. + Overridden to simply set the CurrentResult to the + appropriate Skipped state. - + The execution context for the test + A TestResult - + - Descriptive text for this fixture + TestCommand is the abstract base class for all test commands + in the framework. A TestCommand represents a single stage in + the execution of a test, e.g.: SetUp/TearDown, checking for + Timeout, verifying the returned result from a method, etc. + + TestCommands may decorate other test commands so that the + execution of a lower-level command is nested within that + of a higher level command. All nested commands are executed + synchronously, as a single unit. Scheduling test execution + on separate threads is handled at a higher level, using the + task dispatcher. - + - Gets and sets the category for this fixture. - May be a comma-separated list of categories. + Construct a TestCommand for a test. + The test to be executed - + - Gets a list of categories for this fixture + Gets the test associated with this command. - + - The arguments originally provided to the attribute + Runs the test in a specified context, returning a TestResult. + The TestExecutionContext to be used for running the test. + A TestResult - + - Gets or sets a value indicating whether this should be ignored. + TestMethodCommand is the lowest level concrete command + used to run actual test cases. - true if ignore; otherwise, false. - + - Gets or sets the ignore reason. May set Ignored as a side effect. + Initializes a new instance of the class. - The ignore reason. + The test. - + - Get or set the type arguments. If not set - explicitly, any leading arguments that are - Types are taken as type arguments. + Runs the test, saving a TestResult in the execution context, as + well as returning it. If the test has an expected result, it + is asserts on that value. Since failed tests and errors throw + an exception, this command must be wrapped in an outer command, + will handle that exception and records the failure. This role + is usually played by the SetUpTearDown command. + The execution context - + - Attribute used to identify a method that is - called before any tests in a fixture are run. + TheoryResultCommand adjusts the result of a Theory so that + it fails if all the results were inconclusive. - + - Attribute used to identify a method that is called after - all the tests in a fixture have run. The method is - guaranteed to be called, even if an exception is thrown. + Constructs a TheoryResultCommand + The command to be wrapped by this one - + - Adding this attribute to a method within a - class makes the method callable from the NUnit test runner. There is a property - called Description which is optional which you can provide a more detailed test - description. This class cannot be inherited. + Overridden to call the inner command and adjust the result + in case all chlid results were inconclusive. - - - [TestFixture] - public class Fixture - { - [Test] - public void MethodToTest() - {} - - [Test(Description = "more detailed description")] - publc void TestDescriptionMethod() - {} - } - - + + - + - Used on a method, marks the test with a timeout value in milliseconds. - The test will be run in a separate thread and is cancelled if the timeout - is exceeded. Used on a method or assembly, sets the default timeout - for all contained test methods. + The CommandStage enumeration represents the defined stages + of execution for a series of TestCommands. The int _values + of the enum are used to apply decorators in the proper + order. Lower _values are applied first and are therefore + "closer" to the actual test execution. + + No CommandStage is defined for actual invocation of the test or + for creation of the context. Execution may be imagined as + proceeding from the bottom of the list upwards, with cleanup + after the test running in the opposite order. + - + - Construct a TimeoutAttribute given a time in milliseconds + Use an application-defined default value. - The timeout value in milliseconds - + - Marks a test that must run in the STA, causing it - to run in a separate thread if necessary. - - On methods, you may also use STAThreadAttribute - to serve the same purpose. + Make adjustments needed before and after running + the raw test - that is, after any SetUp has run + and before TearDown. - + - Construct a RequiresSTAAttribute + Run SetUp and TearDown for the test. This stage is used + internally by NUnit and should not normally appear + in user-defined decorators. - + - Marks a test that must run in the MTA, causing it - to run in a separate thread if necessary. - - On methods, you may also use MTAThreadAttribute - to serve the same purpose. + Make adjustments needed before and after running + the entire test - including SetUp and TearDown. - + - Construct a RequiresMTAAttribute + TextMessageWriter writes constraint descriptions and messages + in displayable form as a text stream. It tailors the display + of individual message components to form the standard message + format of NUnit assertion failure messages. - + - Marks a test that must run on a separate thread. + Prefix used for the expected value line of a message - + - Construct a RequiresThreadAttribute + Prefix used for the actual value line of a message - + - Construct a RequiresThreadAttribute, specifying the apartment + Length of a message prefix - + - ValueSourceAttribute indicates the source to be used to - provide data for one parameter of a test method. + Construct a TextMessageWriter - + - Construct with the name of the factory - for use with languages - that don't support params arrays. + Construct a TextMessageWriter, specifying a user message + and optional formatting arguments. - The name of the data source to be used + + - + - Construct with a Type and name - for use with languages - that don't support params arrays. + Gets or sets the maximum line length for this writer - The Type that will provide data - The name of the method, property or field that will provide data - + - The name of a the method, property or fiend to be used as a source + Method to write single line message with optional args, usually + written to precede the general failure message, at a given + indentation level. + The indentation level of the message + The message to be written + Any arguments used in formatting the message - + - A Type to be used as a source + Display Expected and Actual lines for a constraint. This + is called by MessageWriter's default implementation of + WriteMessageTo and provides the generic two-line display. + The result of the constraint that failed - + - A set of Assert methods operationg on one or more collections + Display Expected and Actual lines for given _values. This + method may be called by constraints that need more control over + the display of actual and expected _values than is provided + by the default implementation. + The expected value + The actual value causing the failure - + - The Equals method throws an AssertionException. This is done - to make sure there is no mistake by calling this function. + Display Expected and Actual lines for given _values, including + a tolerance value on the expected line. - - + The expected value + The actual value causing the failure + The tolerance within which the test was made - + - override the default ReferenceEquals to throw an AssertionException. This - implementation makes sure there is no mistake in calling this function - as part of Assert. + Display the expected and actual string _values on separate lines. + If the mismatch parameter is >=0, an additional line is displayed + line containing a caret that points to the mismatch point. - - + The expected string value + The actual string value + The point at which the strings don't match or -1 + If true, case is ignored in string comparisons + If true, clip the strings to fit the max line length - + - Asserts that all items contained in collection are of the type specified by expectedType. + Writes the text for an actual value. - IEnumerable containing objects to be considered - System.Type that all objects in collection must be instances of + The actual value. - + - Asserts that all items contained in collection are of the type specified by expectedType. + Writes the text for a generalized value. - IEnumerable containing objects to be considered - System.Type that all objects in collection must be instances of - The message that will be displayed on failure + The value. - + - Asserts that all items contained in collection are of the type specified by expectedType. + Writes the text for a collection value, + starting at a particular point, to a max length - IEnumerable containing objects to be considered - System.Type that all objects in collection must be instances of - The message that will be displayed on failure - Arguments to be used in formatting the message + The collection containing elements to write. + The starting point of the elements to write + The maximum number of elements to write - + - Asserts that all items contained in collection are not equal to null. + Write the generic 'Expected' line for a constraint - IEnumerable containing objects to be considered + The constraint that failed - + - Asserts that all items contained in collection are not equal to null. + Write the generic 'Expected' line for a given value - IEnumerable containing objects to be considered - The message that will be displayed on failure + The expected value - + - Asserts that all items contained in collection are not equal to null. + Write the generic 'Expected' line for a given value + and tolerance. - IEnumerable of objects to be considered - The message that will be displayed on failure - Arguments to be used in formatting the message + The expected value + The tolerance within which the test was made - + - Ensures that every object contained in collection exists within the collection - once and only once. + Write the generic 'Actual' line for a constraint - IEnumerable of objects to be considered + The ConstraintResult for which the actual value is to be written - + - Ensures that every object contained in collection exists within the collection - once and only once. + Write the generic 'Actual' line for a given value - IEnumerable of objects to be considered - The message that will be displayed on failure + The actual value causing a failure - + - Ensures that every object contained in collection exists within the collection - once and only once. + GenericMethodHelper is able to deduce the Type arguments for + a generic method from the actual arguments provided. - IEnumerable of objects to be considered - The message that will be displayed on failure - Arguments to be used in formatting the message - + - Asserts that expected and actual are exactly equal. The collections must have the same count, - and contain the exact same objects in the same order. + Construct a GenericMethodHelper for a method - The first IEnumerable of objects to be considered - The second IEnumerable of objects to be considered + MethodInfo for the method to examine - + - Asserts that expected and actual are exactly equal. The collections must have the same count, - and contain the exact same objects in the same order. - If comparer is not null then it will be used to compare the objects. + Return the type argments for the method, deducing them + from the arguments actually provided. - The first IEnumerable of objects to be considered - The second IEnumerable of objects to be considered - The IComparer to use in comparing objects from each IEnumerable + The arguments to the method + An array of type arguments. - + - Asserts that expected and actual are exactly equal. The collections must have the same count, - and contain the exact same objects in the same order. + InvalidTestFixtureException is thrown when an appropriate test + fixture constructor using the provided arguments cannot be found. - The first IEnumerable of objects to be considered - The second IEnumerable of objects to be considered - The message that will be displayed on failure - + - Asserts that expected and actual are exactly equal. The collections must have the same count, - and contain the exact same objects in the same order. - If comparer is not null then it will be used to compare the objects. + Initializes a new instance of the class. - The first IEnumerable of objects to be considered - The second IEnumerable of objects to be considered - The IComparer to use in comparing objects from each IEnumerable - The message that will be displayed on failure - + - Asserts that expected and actual are exactly equal. The collections must have the same count, - and contain the exact same objects in the same order. + Initializes a new instance of the class. - The first IEnumerable of objects to be considered - The second IEnumerable of objects to be considered - The message that will be displayed on failure - Arguments to be used in formatting the message + The message. - + - Asserts that expected and actual are exactly equal. The collections must have the same count, - and contain the exact same objects in the same order. - If comparer is not null then it will be used to compare the objects. + Initializes a new instance of the class. - The first IEnumerable of objects to be considered - The second IEnumerable of objects to be considered - The IComparer to use in comparing objects from each IEnumerable - The message that will be displayed on failure - Arguments to be used in formatting the message + The message. + The inner. - + - Asserts that expected and actual are equivalent, containing the same objects but the match may be in any order. + Serialization Constructor - The first IEnumerable of objects to be considered - The second IEnumerable of objects to be considered - + - Asserts that expected and actual are equivalent, containing the same objects but the match may be in any order. + Randomizer returns a set of random _values in a repeatable + way, to allow re-running of tests if necessary. It extends + the .NET Random class, providing random values for a much + wider range of types. + + The class is used internally by the framework to generate + test case data and is also exposed for use by users through + the TestContext.Random property. - The first IEnumerable of objects to be considered - The second IEnumerable of objects to be considered - The message that will be displayed on failure + + For consistency with the underlying Random Type, methods + returning a single value use the prefix "Next..." Those + without an argument return a non-negative value up to + the full positive range of the Type. Overloads are provided + for specifying a maximum or a range. Methods that return + arrays or strings use the prefix "Get..." to avoid + confusion with the single-value methods. + - + - Asserts that expected and actual are equivalent, containing the same objects but the match may be in any order. + Initial seed used to create randomizers for this run - The first IEnumerable of objects to be considered - The second IEnumerable of objects to be considered - The message that will be displayed on failure - Arguments to be used in formatting the message - + - Asserts that expected and actual are not exactly equal. + Get a Randomizer for a particular member, returning + one that has already been created if it exists. + This ensures that the same _values are generated + each time the tests are reloaded. - The first IEnumerable of objects to be considered - The second IEnumerable of objects to be considered - + - Asserts that expected and actual are not exactly equal. - If comparer is not null then it will be used to compare the objects. + Get a randomizer for a particular parameter, returning + one that has already been created if it exists. + This ensures that the same values are generated + each time the tests are reloaded. - The first IEnumerable of objects to be considered - The second IEnumerable of objects to be considered - The IComparer to use in comparing objects from each IEnumerable - + - Asserts that expected and actual are not exactly equal. + Create a new Randomizer using the next seed + available to ensure that each randomizer gives + a unique sequence of values. - The first IEnumerable of objects to be considered - The second IEnumerable of objects to be considered - The message that will be displayed on failure + - + - Asserts that expected and actual are not exactly equal. - If comparer is not null then it will be used to compare the objects. + Default constructor - The first IEnumerable of objects to be considered - The second IEnumerable of objects to be considered - The IComparer to use in comparing objects from each IEnumerable - The message that will be displayed on failure - + - Asserts that expected and actual are not exactly equal. + Construct based on seed value - The first IEnumerable of objects to be considered - The second IEnumerable of objects to be considered - The message that will be displayed on failure - Arguments to be used in formatting the message + - + - Asserts that expected and actual are not exactly equal. - If comparer is not null then it will be used to compare the objects. + Returns a random unsigned int. - The first IEnumerable of objects to be considered - The second IEnumerable of objects to be considered - The IComparer to use in comparing objects from each IEnumerable - The message that will be displayed on failure - Arguments to be used in formatting the message - + - Asserts that expected and actual are not equivalent. + Returns a random unsigned int less than the specified maximum. - The first IEnumerable of objects to be considered - The second IEnumerable of objects to be considered - + - Asserts that expected and actual are not equivalent. + Returns a random unsigned int within a specified range. - The first IEnumerable of objects to be considered - The second IEnumerable of objects to be considered - The message that will be displayed on failure - + - Asserts that expected and actual are not equivalent. + Returns a non-negative random short. - The first IEnumerable of objects to be considered - The second IEnumerable of objects to be considered - The message that will be displayed on failure - Arguments to be used in formatting the message - + - Asserts that collection contains actual as an item. + Returns a non-negative random short less than the specified maximum. - IEnumerable of objects to be considered - Object to be found within collection - + - Asserts that collection contains actual as an item. + Returns a non-negative random short within a specified range. - IEnumerable of objects to be considered - Object to be found within collection - The message that will be displayed on failure - + - Asserts that collection contains actual as an item. + Returns a random unsigned short. - IEnumerable of objects to be considered - Object to be found within collection - The message that will be displayed on failure - Arguments to be used in formatting the message - + - Asserts that collection does not contain actual as an item. + Returns a random unsigned short less than the specified maximum. - IEnumerable of objects to be considered - Object that cannot exist within collection - + - Asserts that collection does not contain actual as an item. + Returns a random unsigned short within a specified range. - IEnumerable of objects to be considered - Object that cannot exist within collection - The message that will be displayed on failure - + - Asserts that collection does not contain actual as an item. + Returns a random long. - IEnumerable of objects to be considered - Object that cannot exist within collection - The message that will be displayed on failure - Arguments to be used in formatting the message - + - Asserts that the superset does not contain the subset + Returns a random long less than the specified maximum. - The IEnumerable subset to be considered - The IEnumerable superset to be considered - + - Asserts that the superset does not contain the subset + Returns a non-negative random long within a specified range. - The IEnumerable subset to be considered - The IEnumerable superset to be considered - The message that will be displayed on failure - + - Asserts that the superset does not contain the subset + Returns a random ulong. - The IEnumerable subset to be considered - The IEnumerable superset to be considered - The message that will be displayed on failure - Arguments to be used in formatting the message - + - Asserts that the superset contains the subset. + Returns a random ulong less than the specified maximum. - The IEnumerable subset to be considered - The IEnumerable superset to be considered - + - Asserts that the superset contains the subset. + Returns a non-negative random long within a specified range. - The IEnumerable subset to be considered - The IEnumerable superset to be considered - The message that will be displayed on failure - + - Asserts that the superset contains the subset. + Returns a random Byte - The IEnumerable subset to be considered - The IEnumerable superset to be considered - The message that will be displayed on failure - Arguments to be used in formatting the message - + - Assert that an array, list or other collection is empty + Returns a random Byte less than the specified maximum. - An array, list or other collection implementing IEnumerable - The message to be displayed on failure - Arguments to be used in formatting the message - + - Assert that an array, list or other collection is empty + Returns a random Byte within a specified range - An array, list or other collection implementing IEnumerable - The message to be displayed on failure - + - Assert that an array,list or other collection is empty + Returns a random SByte - An array, list or other collection implementing IEnumerable - + - Assert that an array, list or other collection is empty + Returns a random sbyte less than the specified maximum. - An array, list or other collection implementing IEnumerable - The message to be displayed on failure - Arguments to be used in formatting the message - + - Assert that an array, list or other collection is empty + Returns a random sbyte within a specified range - An array, list or other collection implementing IEnumerable - The message to be displayed on failure - + - Assert that an array,list or other collection is empty + Returns a random bool - An array, list or other collection implementing IEnumerable - + - Assert that an array, list or other collection is ordered + Returns a random bool based on the probablility a true result - An array, list or other collection implementing IEnumerable - The message to be displayed on failure - Arguments to be used in formatting the message - + - Assert that an array, list or other collection is ordered + Returns a random double between 0.0 and the specified maximum. - An array, list or other collection implementing IEnumerable - The message to be displayed on failure - + - Assert that an array, list or other collection is ordered + Returns a random double within a specified range. - An array, list or other collection implementing IEnumerable - + - Assert that an array, list or other collection is ordered + Returns a random float. - An array, list or other collection implementing IEnumerable - A custom comparer to perform the comparisons - The message to be displayed on failure - Arguments to be used in formatting the message - + - Assert that an array, list or other collection is ordered + Returns a random float between 0.0 and the specified maximum. - An array, list or other collection implementing IEnumerable - A custom comparer to perform the comparisons - The message to be displayed on failure - + - Assert that an array, list or other collection is ordered + Returns a random float within a specified range. - An array, list or other collection implementing IEnumerable - A custom comparer to perform the comparisons - + - AllItemsConstraint applies another constraint to each - item in a collection, succeeding if they all succeed. + Returns a random enum value of the specified Type as an object. - + - Abstract base class used for prefixes + Returns a random enum value of the specified Type. - + - The Constraint class is the base of all built-in constraints - within NUnit. It provides the operator overloads used to combine - constraints. + Default characters for random functions. + Default characters are the English alphabet (uppercase & lowercase), arabic numerals, and underscore - + - The IConstraintExpression interface is implemented by all - complete and resolvable constraints and expressions. + Generate a random string based on the characters from the input string. + desired length of output string. + string representing the set of characters from which to construct the resulting string + A random string of arbitrary length - + - Return the top-level constraint for this expression + Generate a random string based on the characters from the input string. - + desired length of output string. + A random string of arbitrary length + Uses DefaultStringChars as the input character set - + - Static UnsetObject used to detect derived constraints - failing to set the actual value. + Generate a random string based on the characters from the input string. + A random string of the default length + Uses DefaultStringChars as the input character set - + - The actual value being tested against a constraint + Returns a random decimal. - + - The display name of this Constraint for use by ToString() + Returns a random decimal between positive zero and the specified maximum. - + - Argument fields used by ToString(); + Returns a random decimal within a specified range, which is not + permitted to exceed decimal.MaxVal in the current implementation. + + A limitation of this implementation is that the range from min + to max must not exceed decimal.MaxVal. + - + - The builder holding this constraint + StackFilter class is used to remove internal NUnit + entries from a stack trace so that the resulting + trace provides better information about the test. - + - Construct a constraint with no arguments + Filters a raw stack trace and returns the result. + The original stack trace + A filtered stack trace - + - Construct a constraint with one argument + Provides methods to support legacy string comparison methods. - + - Construct a constraint with two arguments + Compares two strings for equality, ignoring case if requested. + The first string. + The second string.. + if set to true, the case of the letters in the strings is ignored. + Zero if the strings are equivalent, a negative number if strA is sorted first, a positive number if + strB is sorted first - + - Sets the ConstraintBuilder holding this constraint + Compares two strings for equality, ignoring case if requested. + The first string. + The second string.. + if set to true, the case of the letters in the strings is ignored. + True if the strings are equivalent, false if not. - + - Write the failure message to the MessageWriter provided - as an argument. The default implementation simply passes - the constraint and the actual value to the writer, which - then displays the constraint description and the value. - - Constraints that need to provide additional details, - such as where the error occured can override this. + The TestCaseParameters class encapsulates method arguments and + other selected parameters needed for constructing + a parameterized test case. - The MessageWriter on which to display the message - + - Test whether the constraint is satisfied by a given value + Default Constructor creates an empty parameter set - The value to be tested - True for success, false for failure - + - Test whether the constraint is satisfied by an - ActualValueDelegate that returns the value to be tested. - The default implementation simply evaluates the delegate - but derived classes may override it to provide for delayed - processing. + Construct a non-runnable ParameterSet, specifying + the provider exception that made it invalid. - An - True for success, false for failure - + - Test whether the constraint is satisfied by a given reference. - The default implementation simply dereferences the value but - derived classes may override it to provide for delayed processing. + Construct a parameter set with a list of arguments - A reference to the value to be tested - True for success, false for failure + - + - Write the constraint description to a MessageWriter + Construct a ParameterSet from an object implementing ITestCaseData - The writer on which the description is displayed + - + - Write the actual value for a failing constraint test to a - MessageWriter. The default implementation simply writes - the raw value of actual, leaving it to the writer to - perform any formatting. + Type arguments used to create a generic fixture instance - The writer on which the actual value is displayed - + - Default override of ToString returns the constraint DisplayName - followed by any arguments within angle brackets. + TestParameters is the abstract base class for all classes + that know how to provide data for constructing a test. - - + - Returns the string representation of this constraint + Default Constructor creates an empty parameter set - + - This operator creates a constraint that is satisfied only if both - argument constraints are satisfied. + Construct a parameter set with a list of arguments + - + - This operator creates a constraint that is satisfied if either - of the argument constraints is satisfied. + Construct a non-runnable ParameterSet, specifying + the provider exception that made it invalid. - + - This operator creates a constraint that is satisfied if the - argument constraint is not satisfied. + Construct a ParameterSet from an object implementing ITestData + - + - Returns a DelayedConstraint with the specified delay time. + The RunState for this set of parameters. - The delay in milliseconds. - - + - Returns a DelayedConstraint with the specified delay time - and polling interval. + The arguments to be used in running the test, + which must match the method signature. - The delay in milliseconds. - The interval at which to test the constraint. - - + - The display name of this Constraint for use by ToString(). - The default value is the name of the constraint with - trailing "Constraint" removed. Derived classes may set - this to another name in their constructors. + A name to be used for this test case in lieu + of the standard generated name containing + the argument list. - + - Returns a ConstraintExpression by appending And - to the current constraint. + Gets the property dictionary for this test - + - Returns a ConstraintExpression by appending And - to the current constraint. + Applies ParameterSet _values to the test itself. + A test. - + - Returns a ConstraintExpression by appending Or - to the current constraint. + The original arguments provided by the user, + used for display purposes. - + - Class used to detect any derived constraints - that fail to set the actual value in their - Matches override. + Enumeration indicating whether the tests are + running normally or being cancelled. - + - The base constraint + Running normally with no stop requested - + - Construct given a base constraint + A graceful stop has been requested - - + - Construct an AllItemsConstraint on top of an existing constraint + A forced stop has been requested - - + - Apply the item constraint to each item in the collection, - failing if any item fails. + The PropertyNames class provides static constants for the + standard property ids that NUnit uses on tests. - - - + - Write a description of this constraint to a MessageWriter + The FriendlyName of the AppDomain in which the assembly is running - - + - AndConstraint succeeds only if both members succeed. + The selected strategy for joining parameter data into test cases - + - BinaryConstraint is the abstract base of all constraints - that combine two other constraints in some fashion. + The process ID of the executing assembly - + - The first constraint being combined + The stack trace from any data provider that threw + an exception. - + - The second constraint being combined + The reason a test was not run - + - Construct a BinaryConstraint from two other constraints + The author of the tests - The first constraint - The second constraint - + - Create an AndConstraint from two other constraints + The ApartmentState required for running the test - The first constraint - The second constraint - + - Apply both member constraints to an actual value, succeeding - succeeding only if both of them succeed. + The categories applying to a test - The actual value - True if the constraints both succeeded - + - Write a description for this contraint to a MessageWriter + The Description of a test - The MessageWriter to receive the description - + - Write the actual value for a failing constraint test to a - MessageWriter. The default implementation simply writes - the raw value of actual, leaving it to the writer to - perform any formatting. + The number of threads to be used in running tests - The writer on which the actual value is displayed - + - AssignableFromConstraint is used to test that an object - can be assigned from a given Type. + The maximum time in ms, above which the test is considered to have failed - + - TypeConstraint is the abstract base for constraints - that take a Type as their expected value. + The ParallelScope associated with a test - + - The expected Type used by the constraint + The number of times the test should be repeated - + - Construct a TypeConstraint for a given Type + Indicates that the test should be run on a separate thread - - + - Write the actual value for a failing constraint test to a - MessageWriter. TypeConstraints override this method to write - the name of the type. + The culture to be set for a test - The writer on which the actual value is displayed - + - Construct an AssignableFromConstraint for the type provided + The UI culture to be set for a test - - + - Test whether an object can be assigned from the specified type + The type that is under test - The object to be tested - True if the object can be assigned a value of the expected Type, otherwise false. - + - Write a description of this constraint to a MessageWriter + The timeout value for the test - The MessageWriter to use - + - AssignableToConstraint is used to test that an object - can be assigned to a given Type. + The test will be ignored until the given date - + - Construct an AssignableToConstraint for the type provided + The optional Order the test will run in - - + - Test whether an object can be assigned to the specified type + CultureDetector is a helper class used by NUnit to determine + whether a test should be run based on the current culture. - The object to be tested - True if the object can be assigned a value of the expected Type, otherwise false. - + - Write a description of this constraint to a MessageWriter + Default constructor uses the current culture. - The MessageWriter to use - + - AttributeConstraint tests that a specified attribute is present - on a Type or other provider and that the value of the attribute - satisfies some other constraint. + Construct a CultureDetector for a particular culture for testing. + The culture to be used - + - Constructs an AttributeConstraint for a specified attriute - Type and base constraint. + Test to determine if one of a collection of cultures + is being used currently. - - + + - + - Determines whether the Type or other provider has the - expected attribute and if its value matches the - additional constraint specified. + Tests to determine if the current culture is supported + based on a culture attribute. + The attribute to examine + - + - Writes a description of the attribute to the specified writer. + Test to determine if the a particular culture or comma- + delimited set of cultures is in use. + Name of the culture or comma-separated list of culture ids + True if the culture is in use on the system - + - Writes the actual value supplied to the specified writer. + Return the last failure reason. Results are not + defined if called before IsSupported( Attribute ) + is called. - + - Returns a string representation of the constraint. + ExceptionHelper provides static methods for working with exceptions + + + + + Rethrows an exception, preserving its stack trace + The exception to rethrow - + - AttributeExistsConstraint tests for the presence of a - specified attribute on a Type. + Builds up a message, using the Message field of the specified exception + as well as any InnerExceptions. + The exception. + A combined message string. - + - Constructs an AttributeExistsConstraint for a specific attribute Type + Builds up a message, using the Message field of the specified exception + as well as any InnerExceptions. - + The exception. + A combined stack trace. - + - Tests whether the object provides the expected attribute. + Gets the stack trace of the exception. - A Type, MethodInfo, or other ICustomAttributeProvider - True if the expected attribute is present, otherwise false + The exception. + A string representation of the stack trace. - + - Writes the description of the constraint to the specified writer + InvalidTestFixtureException is thrown when an appropriate test + fixture constructor using the provided arguments cannot be found. - + - BasicConstraint is the abstract base for constraints that - perform a simple comparison to a constant value. + Initializes a new instance of the class. - + - Initializes a new instance of the class. + Initializes a new instance of the class. - The expected. - The description. + The message. - + - Test whether the constraint is satisfied by a given value + Initializes a new instance of the class. - The value to be tested - True for success, false for failure + The message. + The inner. - + - Write the constraint description to a MessageWriter + Serialization Constructor - The writer on which the description is displayed - + - CollectionConstraint is the abstract base class for - constraints that operate on collections. + Thrown when an assertion failed. Here to preserve the inner + exception and hence its stack trace. - + - Construct an empty CollectionConstraint + Initializes a new instance of the class. - + - Construct a CollectionConstraint + Initializes a new instance of the class. - + The error message that explains + the reason for the exception - + - Determines whether the specified enumerable is empty. + Initializes a new instance of the class. - The enumerable. - - true if the specified enumerable is empty; otherwise, false. - + The error message that explains + the reason for the exception + The exception that caused the + current exception - + - Test whether the constraint is satisfied by a given value + Serialization Constructor - The value to be tested - True for success, false for failure - + - Protected method to be implemented by derived classes + OSPlatform represents a particular operating system platform - - - + - CollectionContainsConstraint is used to test whether a collection - contains an expected object as a member. + Platform ID for Unix as defined by Microsoft .NET 2.0 and greater - + - CollectionItemsEqualConstraint is the abstract base class for all - collection constraints that apply some notion of item equality - as a part of their operation. + Platform ID for Unix as defined by Mono - + - Construct an empty CollectionConstraint + Platform ID for XBox as defined by .NET and Mono, but not CF - + - Construct a CollectionConstraint + Platform ID for MacOSX as defined by .NET and Mono, but not CF - - + - Flag the constraint to use the supplied EqualityAdapter. - NOTE: For internal use only. + Get the OSPlatform under which we are currently running - The EqualityAdapter to use. - Self. - + - Flag the constraint to use the supplied IComparer object. + Gets the actual OS Version, not the incorrect value that might be + returned for Win 8.1 and Win 10 - The IComparer object to use. - Self. + + If an application is not manifested as Windows 8.1 or Windows 10, + the version returned from Environment.OSVersion will not be 6.3 and 10.0 + respectively, but will be 6.2 and 6.3. The correct value can be found in + the registry. + + The original version + The correct OS version - + - Flag the constraint to use the supplied IComparer object. + Product Type Enumeration used for Windows - The IComparer object to use. - Self. - + - Flag the constraint to use the supplied Comparison object. + Product type is unknown or unspecified - The IComparer object to use. - Self. - + - Flag the constraint to use the supplied IEqualityComparer object. + Product type is Workstation - The IComparer object to use. - Self. - + - Flag the constraint to use the supplied IEqualityComparer object. + Product type is Domain Controller - The IComparer object to use. - Self. - + - Compares two collection members for equality + Product type is Server - + - Return a new CollectionTally for use in making tests + Construct from a platform ID and version - The collection to be included in the tally - + - Flag the constraint to ignore case and return self. + Construct from a platform ID, version and product type - + - Construct a CollectionContainsConstraint + Get the platform ID of this instance - - + - Test whether the expected item is contained in the collection + Get the Version of this instance - - - + - Write a descripton of the constraint to a MessageWriter + Get the Product Type of this instance - - + - CollectionEquivalentCOnstraint is used to determine whether two - collections are equivalent. + Return true if this is a windows platform - + - Construct a CollectionEquivalentConstraint + Return true if this is a Unix or Linux platform - - + - Test whether two collections are equivalent + Return true if the platform is Win32S - - - + - Write a description of this constraint to a MessageWriter + Return true if the platform is Win32Windows - - + - CollectionSubsetConstraint is used to determine whether - one collection is a subset of another + Return true if the platform is Win32NT - + - Construct a CollectionSubsetConstraint + Return true if the platform is Windows CE - The collection that the actual value is expected to be a subset of - + - Test whether the actual collection is a subset of - the expected collection provided. + Return true if the platform is Xbox - - - + - Write a description of this constraint to a MessageWriter + Return true if the platform is MacOSX - - + - CollectionTally counts (tallies) the number of - occurences of each object in one or more enumerations. + Return true if the platform is Windows 95 - + - Construct a CollectionTally object from a comparer and a collection + Return true if the platform is Windows 98 - + - Try to remove an object from the tally + Return true if the platform is Windows ME - The object to remove - True if successful, false if the object was not found - + - Try to remove a set of objects from the tally + Return true if the platform is NT 3 - The objects to remove - True if successful, false if any object was not found - + - The number of objects remaining in the tally + Return true if the platform is NT 4 - + - ComparisonAdapter class centralizes all comparisons of - values in NUnit, adapting to the use of any provided - IComparer, IComparer<T> or Comparison<T> + Return true if the platform is NT 5 - + - Returns a ComparisonAdapter that wraps an IComparer + Return true if the platform is Windows 2000 - + - Returns a ComparisonAdapter that wraps an IComparer<T> + Return true if the platform is Windows XP - + - Returns a ComparisonAdapter that wraps a Comparison<T> + Return true if the platform is Windows 2003 Server - + - Compares two objects + Return true if the platform is NT 6 - + - Gets the default ComparisonAdapter, which wraps an - NUnitComparer object. + Return true if the platform is NT 6.0 - + - Construct a ComparisonAdapter for an IComparer + Return true if the platform is NT 6.1 - + - Compares two objects + Return true if the platform is NT 6.2 - - - - + - Construct a default ComparisonAdapter + Return true if the platform is NT 6.3 - + - ComparisonAdapter<T> extends ComparisonAdapter and - allows use of an IComparer<T> or Comparison<T> - to actually perform the comparison. + Return true if the platform is Vista - + - Construct a ComparisonAdapter for an IComparer<T> + Return true if the platform is Windows 2008 Server (original or R2) - + - Compare a Type T to an object + Return true if the platform is Windows 2008 Server (original) - + - Construct a ComparisonAdapter for a Comparison<T> + Return true if the platform is Windows 2008 Server R2 - + - Compare a Type T to an object + Return true if the platform is Windows 2012 Server (original or R2) - + - Abstract base class for constraints that compare values to - determine if one is greater than, equal to or less than - the other. This class supplies the Using modifiers. + Return true if the platform is Windows 2012 Server (original) - + - ComparisonAdapter to be used in making the comparison + Return true if the platform is Windows 2012 Server R2 - + - Initializes a new instance of the class. + Return true if the platform is Windows 7 - + - Initializes a new instance of the class. + Return true if the platform is Windows 8 - + - Modifies the constraint to use an IComparer and returns self + Return true if the platform is Windows 8.1 - + - Modifies the constraint to use an IComparer<T> and returns self + Return true if the platform is Windows 10 - + - Modifies the constraint to use a Comparison<T> and returns self + Return true if the platform is Windows Server. This is named Windows + Server 10 to distinguish it from previous versions of Windows Server. - + - Delegate used to delay evaluation of the actual value - to be used in evaluating a constraint + The TestCaseParameters class encapsulates method arguments and + other selected parameters needed for constructing + a parameterized test case. - + - ConstraintBuilder maintains the stacks that are used in - processing a ConstraintExpression. An OperatorStack - is used to hold operators that are waiting for their - operands to be reognized. a ConstraintStack holds - input constraints as well as the results of each - operator applied. + The expected result to be returned - + - Initializes a new instance of the class. + Default Constructor creates an empty parameter set - + - Appends the specified operator to the expression by first - reducing the operator stack and then pushing the new - operator on the stack. + Construct a non-runnable ParameterSet, specifying + the provider exception that made it invalid. - The operator to push. - + - Appends the specified constraint to the expresson by pushing - it on the constraint stack. + Construct a parameter set with a list of arguments - The constraint to push. + - + - Sets the top operator right context. + Construct a ParameterSet from an object implementing ITestCaseData - The right context. + - + - Reduces the operator stack until the topmost item - precedence is greater than or equal to the target precedence. + The expected result of the test, which + must match the method return type. - The target precedence. - + - Resolves this instance, returning a Constraint. If the builder - is not currently in a resolvable state, an exception is thrown. + Gets a value indicating whether an expected result was specified. - The resolved constraint - + - Gets a value indicating whether this instance is resolvable. + PlatformHelper class is used by the PlatformAttribute class to + determine whether a platform is supported. - - true if this instance is resolvable; otherwise, false. - - + - OperatorStack is a type-safe stack for holding ConstraintOperators + Comma-delimited list of all supported OS platform constants - + - Initializes a new instance of the class. + Comma-delimited list of all supported Runtime platform constants - The builder. - + - Pushes the specified operator onto the stack. + Default constructor uses the operating system and + common language runtime of the system. - The op. - + - Pops the topmost operator from the stack. + Construct a PlatformHelper for a particular operating + system and common language runtime. Used in testing. - + OperatingSystem to be used + RuntimeFramework to be used - + - Gets a value indicating whether this is empty. + Test to determine if one of a collection of platforms + is being used currently. - true if empty; otherwise, false. + + - + - Gets the topmost operator without modifying the stack. + Tests to determine if the current platform is supported + based on a platform attribute. - The top. + The attribute to examine + - + - ConstraintStack is a type-safe stack for holding Constraints + Tests to determine if the current platform is supported + based on a platform attribute. + The attribute to examine + - + - Initializes a new instance of the class. + Test to determine if the a particular platform or comma- + delimited set of platforms is in use. - The builder. + Name of the platform or comma-separated list of platform ids + True if the platform is in use on the system - + - Pushes the specified constraint. As a side effect, - the constraint's builder field is set to the - ConstraintBuilder owning this stack. + Return the last failure reason. Results are not + defined if called before IsSupported( Attribute ) + is called. - The constraint. - + - Pops this topmost constrait from the stack. - As a side effect, the constraint's builder - field is set to null. + A PropertyBag represents a collection of name value pairs + that allows duplicate entries with the same key. Methods + are provided for adding a new pair as well as for setting + a key to a single value. All keys are strings but _values + may be of any type. Null _values are not permitted, since + a null entry represents the absence of the key. - - + - Gets a value indicating whether this is empty. + Adds a key/value pair to the property set - true if empty; otherwise, false. + The key + The value - + - Gets the topmost constraint without modifying the stack. + Sets the value for a key, removing any other + _values that are already in the property set. - The topmost constraint + + - + - ConstraintExpression represents a compound constraint in the - process of being constructed from a series of syntactic elements. - - Individual elements are appended to the expression as they are - reognized. Once an actual Constraint is appended, the expression - returns a resolvable Constraint. + Gets a single value for a key, using the first + one if multiple _values are present and returning + null if the value is not found. + + - + - ConstraintExpressionBase is the abstract base class for the - ConstraintExpression class, which represents a - compound constraint in the process of being constructed - from a series of syntactic elements. - - NOTE: ConstraintExpressionBase is separate because the - ConstraintExpression class was generated in earlier - versions of NUnit. The two classes may be combined - in a future version. + Gets a flag indicating whether the specified key has + any entries in the property set. + The key to be checked + + True if their are _values present, otherwise false + - + - The ConstraintBuilder holding the elements recognized so far + Gets a collection containing all the keys in the property set + - + - Initializes a new instance of the class. + Gets or sets the list of _values for a particular key - + - Initializes a new instance of the - class passing in a ConstraintBuilder, which may be pre-populated. + Returns an XmlNode representating the current PropertyBag. - The builder. + Not used + An XmlNode representing the PropertyBag - + - Returns a string representation of the expression as it - currently stands. This should only be used for testing, - since it has the side-effect of resolving the expression. + Returns an XmlNode representing the PropertyBag after + adding it as a child of the supplied parent node. + The parent node. + Not used - + - Appends an operator to the expression and returns the - resulting expression itself. + Helper methods for inspecting a type by reflection. + + Many of these methods take ICustomAttributeProvider as an + argument to avoid duplication, even though certain attributes can + only appear on specific types of members, like MethodInfo or Type. + + In the case where a type is being examined for the presence of + an attribute, interface or named member, the Reflect methods + operate with the full name of the member being sought. This + removes the necessity of the caller having a reference to the + assembly that defines the item being sought and allows the + NUnit core to inspect assemblies that reference an older + version of the NUnit framework. - + - Appends a self-resolving operator to the expression and - returns a new ResolvableConstraintExpression. + Examine a fixture type and return an array of methods having a + particular attribute. The array is order with base methods first. + The type to examine + The attribute Type to look for + Specifies whether to search the fixture type inheritance chain + The array of methods found - + - Appends a constraint to the expression and returns that - constraint, which is associated with the current state - of the expression being built. + Examine a fixture type and return true if it has a method with + a particular attribute. + The type to examine + The attribute Type to look for + True if found, otherwise false - + - Initializes a new instance of the class. + Invoke the default constructor on a Type + The Type to be constructed + An instance of the Type - + - Initializes a new instance of the - class passing in a ConstraintBuilder, which may be pre-populated. + Invoke a constructor on a Type with arguments - The builder. + The Type to be constructed + Arguments to the constructor + An instance of the Type - + - Returns a ConstraintExpression, which will apply - the following constraint to all members of a collection, - succeeding only if a specified number of them succeed. + Returns an array of types from an array of objects. + Used because the compact framework doesn't support + Type.GetTypeArray() - - - - Returns a new PropertyConstraintExpression, which will either - test for the existence of the named property on the object - being tested or apply any following constraint to that property. + An array of objects + An array of Types + + + + Invoke a parameterless method returning void on an object. + A MethodInfo for the method to be invoked + The object on which to invoke the method - + - Returns a new AttributeConstraint checking for the - presence of a particular attribute on an object. + Invoke a method, converting any TargetInvocationException to an NUnitException. + A MethodInfo for the method to be invoked + The object on which to invoke the method + The argument list for the method + The return value from the invoked method - + - Returns a new AttributeConstraint checking for the - presence of a particular attribute on an object. + - + - Returns the constraint provided as an argument - used to allow custom - custom constraints to easily participate in the syntax. + The TestResult class represents the result of a test. - + - Returns the constraint provided as an argument - used to allow custom - custom constraints to easily participate in the syntax. + Error message for when child tests have errors - + - Returns a constraint that tests two items for equality + Error message for when child tests are ignored - + - Returns a constraint that tests that two references are the same object + The minimum duration for tests - + - Returns a constraint that tests whether the - actual value is greater than the suppled argument + Aggregate assertion count - + - Returns a constraint that tests whether the - actual value is greater than or equal to the suppled argument + Construct a test result given a Test + The test to be used - + - Returns a constraint that tests whether the - actual value is greater than or equal to the suppled argument + Gets the test with which this result is associated. - + - Returns a constraint that tests whether the - actual value is less than the suppled argument + Gets the ResultState of the test result, which + indicates the success or failure of the test. - + - Returns a constraint that tests whether the - actual value is less than or equal to the suppled argument + Gets the name of the test result - + - Returns a constraint that tests whether the - actual value is less than or equal to the suppled argument + Gets the full name of the test result - + - Returns a constraint that tests whether the actual - value is of the exact type supplied as an argument. + Gets or sets the elapsed time for running the test in seconds - + - Returns a constraint that tests whether the actual - value is of the exact type supplied as an argument. + Gets or sets the time the test started running. - + - Returns a constraint that tests whether the actual value - is of the type supplied as an argument or a derived type. + Gets or sets the time the test finished running. - + - Returns a constraint that tests whether the actual value - is of the type supplied as an argument or a derived type. + Gets the message associated with a test + failure or with not running the test - + - Returns a constraint that tests whether the actual value - is of the type supplied as an argument or a derived type. + Gets any stacktrace associated with an + error or failure. - + - Returns a constraint that tests whether the actual value - is of the type supplied as an argument or a derived type. + Gets or sets the count of asserts executed + when running the test. - + - Returns a constraint that tests whether the actual value - is assignable from the type supplied as an argument. + Gets the number of test cases that failed + when running the test and all its children. - + - Returns a constraint that tests whether the actual value - is assignable from the type supplied as an argument. + Gets the number of test cases that passed + when running the test and all its children. - + - Returns a constraint that tests whether the actual value - is assignable from the type supplied as an argument. + Gets the number of test cases that were skipped + when running the test and all its children. - + - Returns a constraint that tests whether the actual value - is assignable from the type supplied as an argument. + Gets the number of test cases that were inconclusive + when running the test and all its children. - + - Returns a constraint that tests whether the actual value - is a collection containing the same elements as the - collection supplied as an argument. + Indicates whether this result has any child results. - + - Returns a constraint that tests whether the actual value - is a subset of the collection supplied as an argument. + Gets the collection of child results. - + - Returns a new CollectionContainsConstraint checking for the - presence of a particular object in the collection. + Gets a TextWriter, which will write output to be included in the result. - + - Returns a new CollectionContainsConstraint checking for the - presence of a particular object in the collection. + Gets any text output written to this result. - + - Returns a new ContainsConstraint. This constraint - will, in turn, make use of the appropriate second-level - constraint, depending on the type of the actual argument. - This overload is only used if the item sought is a string, - since any other type implies that we are looking for a - collection member. + Returns the Xml representation of the result. + If true, descendant results are included + An XmlNode representing the result - + - Returns a constraint that succeeds if the actual - value contains the substring supplied as an argument. + Adds the XML representation of the result as a child of the + supplied parent node.. + The parent node. + If true, descendant results are included + - + - Returns a constraint that succeeds if the actual - value contains the substring supplied as an argument. + Set the result of the test + The ResultState to use in the result - + - Returns a constraint that succeeds if the actual - value starts with the substring supplied as an argument. + Set the result of the test + The ResultState to use in the result + A message associated with the result state - + - Returns a constraint that succeeds if the actual - value starts with the substring supplied as an argument. + Set the result of the test + The ResultState to use in the result + A message associated with the result state + Stack trace giving the location of the command - + - Returns a constraint that succeeds if the actual - value ends with the substring supplied as an argument. + Set the test result based on the type of exception thrown + The exception that was thrown - + - Returns a constraint that succeeds if the actual - value ends with the substring supplied as an argument. + Set the test result based on the type of exception thrown + The exception that was thrown + THe FailureSite to use in the result - + - Returns a constraint that succeeds if the actual - value matches the regular expression supplied as an argument. + RecordTearDownException appends the message and stacktrace + from an exception arising during teardown of the test + to any previously recorded information, so that any + earlier failure information is not lost. Note that + calling Assert.Ignore, Assert.Inconclusive, etc. during + teardown is treated as an error. If the current result + represents a suite, it may show a teardown error even + though all contained tests passed. + The Exception to be recorded - + - Returns a constraint that succeeds if the actual - value matches the regular expression supplied as an argument. + Adds a reason element to a node and returns it. + The target node. + The new reason element. - + - Returns a constraint that tests whether the path provided - is the same as an expected path after canonicalization. + Adds a failure element to a node and returns it. + The target node. + The new failure element. - + - Returns a constraint that tests whether the path provided - is the same path or under an expected path after canonicalization. + Enumeration identifying a common language + runtime implementation. - + + Any supported runtime framework + + + Microsoft .NET Framework + + + Microsoft .NET Compact Framework + + + Microsoft Shared Source CLI + + + Mono + + + Silverlight + + + MonoTouch + + - Returns a constraint that tests whether the path provided - is the same path or under an expected path after canonicalization. + RuntimeFramework represents a particular version + of a common language runtime implementation. - + - Returns a constraint that tests whether the actual value falls - within a specified range. + DefaultVersion is an empty Version, used to indicate that + NUnit should select the CLR version to use for the test. - + - Returns a ConstraintExpression that negates any - following constraint. + Construct from a runtime type and version. If the version has + two parts, it is taken as a framework version. If it has three + or more, it is taken as a CLR version. In either case, the other + version is deduced based on the runtime type and provided version. + The runtime type of the framework + The version of the framework - + - Returns a ConstraintExpression that negates any - following constraint. + Static method to return a RuntimeFramework object + for the framework that is currently in use. - + - Returns a ConstraintExpression, which will apply - the following constraint to all members of a collection, - succeeding if all of them succeed. + The type of this runtime framework - + - Returns a ConstraintExpression, which will apply - the following constraint to all members of a collection, - succeeding if at least one of them succeeds. + The framework version for this runtime framework - + - Returns a ConstraintExpression, which will apply - the following constraint to all members of a collection, - succeeding if all of them fail. + The CLR version for this runtime framework - + - Returns a new ConstraintExpression, which will apply the following - constraint to the Length property of the object being tested. + Return true if any CLR version may be used in + matching this RuntimeFramework object. - + - Returns a new ConstraintExpression, which will apply the following - constraint to the Count property of the object being tested. + Returns the Display name for this framework - + - Returns a new ConstraintExpression, which will apply the following - constraint to the Message property of the object being tested. + Parses a string representing a RuntimeFramework. + The string may be just a RuntimeType name or just + a Version or a hyphenated RuntimeType-Version or + a Version prefixed by 'versionString'. + + - + - Returns a new ConstraintExpression, which will apply the following - constraint to the InnerException property of the object being tested. + Overridden to return the short name of the framework + - + - With is currently a NOP - reserved for future use. + Returns true if the current framework matches the + one supplied as an argument. Two frameworks match + if their runtime types are the same or either one + is RuntimeType.Any and all specified version components + are equal. Negative (i.e. unspecified) version + components are ignored. + The RuntimeFramework to be matched. + True on match, otherwise false - + + + Helper class used to save and restore certain static or + singleton settings in the environment that affect tests + or which might be changed by the user tests. + + An internal class is used to hold settings and a stack + of these objects is pushed and popped as Save and Restore + are called. + + + - Returns a constraint that tests for null + Link to a prior saved context - + - Returns a constraint that tests for True + Indicates that a stop has been requested - + - Returns a constraint that tests for False + The event listener currently receiving notifications - + - Returns a constraint that tests for a positive value + The number of assertions for the current test - + - Returns a constraint that tests for a negative value + The current culture - + - Returns a constraint that tests for NaN + The current UI culture - + - Returns a constraint that tests for empty + The current test result - + - Returns a constraint that tests whether a collection - contains all unique items. + The current Principal. - + - Returns a constraint that tests whether an object graph is serializable in binary format. + Initializes a new instance of the class. - + - Returns a constraint that tests whether an object graph is serializable in xml format. + Initializes a new instance of the class. + An existing instance of TestExecutionContext. - + - Returns a constraint that tests whether a collection is ordered + Gets and sets the current context. - + - ContainsConstraint tests a whether a string contains a substring - or a collection contains an object. It postpones the decision of - which test to use until the type of the actual argument is known. - This allows testing whether a string is contained in a collection - or as a substring of another string using the same syntax. + Get the current context or return null if none is found. + - + - Initializes a new instance of the class. + Clear the current context. This is provided to + prevent "leakage" of the CallContext containing + the current context back to any runners. - The expected. - + - Test whether the constraint is satisfied by a given value + Gets or sets the current test - The value to be tested - True for success, false for failure - + - Write the constraint description to a MessageWriter + The time the current test started execution - The writer on which the description is displayed - + - Flag the constraint to use the supplied IComparer object. + The time the current test started in Ticks - The IComparer object to use. - Self. - + - Flag the constraint to use the supplied IComparer object. + Gets or sets the current test result - The IComparer object to use. - Self. - + - Flag the constraint to use the supplied Comparison object. + Gets a TextWriter that will send output to the current test result. - The IComparer object to use. - Self. - + - Flag the constraint to use the supplied IEqualityComparer object. + The current test object - that is the user fixture + object on which tests are being executed. - The IComparer object to use. - Self. - + - Flag the constraint to use the supplied IEqualityComparer object. + Get or set the working directory - The IComparer object to use. - Self. - + - Flag the constraint to ignore case and return self. + Get or set indicator that run should stop on the first error - + - Applies a delay to the match so that a match can be evaluated in the future. + Gets an enum indicating whether a stop has been requested. - + - Creates a new DelayedConstraint + The current test event listener - The inner constraint two decorate - The time interval after which the match is performed - If the value of is less than 0 - + - Creates a new DelayedConstraint + The current WorkItemDispatcher. Made public for + use by nunitlite.tests - The inner constraint two decorate - The time interval after which the match is performed - The time interval used for polling - If the value of is less than 0 - + - Test whether the constraint is satisfied by a given value + The ParallelScope to be used by tests running in this context. + For builds with out the parallel feature, it has no effect. - The value to be tested - True for if the base constraint fails, false if it succeeds - + - Test whether the constraint is satisfied by a delegate + The unique name of the worker that spawned the context. + For builds with out the parallel feature, it is null. - The delegate whose value is to be tested - True for if the base constraint fails, false if it succeeds - + - Test whether the constraint is satisfied by a given reference. - Overridden to wait for the specified delay period before - calling the base constraint with the dereferenced value. + Gets the RandomGenerator specific to this Test - A reference to the value to be tested - True for success, false for failure - + - Write the constraint description to a MessageWriter + Gets the assert count. - The writer on which the description is displayed + The assert count. - + - Write the actual value for a failing constraint test to a MessageWriter. + Gets or sets the test case timeout value - The writer on which the actual value is displayed - + - Returns the string representation of the constraint. + Gets a list of ITestActions set by upstream tests - + - EmptyCollectionConstraint tests whether a collection is empty. + Saves or restores the CurrentCulture - + - Check that the collection is empty + Saves or restores the CurrentUICulture - - - + - Write the constraint description to a MessageWriter + Gets or sets the current for the Thread. - - + - EmptyConstraint tests a whether a string or collection is empty, - postponing the decision about which test is applied until the - type of the actual argument is known. + The current head of the ValueFormatter chain, copied from MsgUtils.ValueFormatter - + - Test whether the constraint is satisfied by a given value + If true, all tests must run on the same thread. No new thread may be spawned. - The value to be tested - True for success, false for failure - + - Write the constraint description to a MessageWriter + Record any changes in the environment made by + the test code in the execution context so it + will be passed on to lower level tests. - The writer on which the description is displayed - + - EmptyDirectoryConstraint is used to test that a directory is empty + Set up the execution environment to match a context. + Note that we may be running on the same thread where the + context was initially created or on a different thread. - + - Test whether the constraint is satisfied by a given value + Increments the assert count by one. - The value to be tested - True for success, false for failure - + - Write the constraint description to a MessageWriter + Increments the assert count by a specified amount. - The writer on which the description is displayed - + - Write the actual value for a failing constraint test to a - MessageWriter. The default implementation simply writes - the raw value of actual, leaving it to the writer to - perform any formatting. + Adds a new ValueFormatterFactory to the chain of formatters - The writer on which the actual value is displayed + The new factory - + - EmptyStringConstraint tests whether a string is empty. + Obtain lifetime service object + - + - Test whether the constraint is satisfied by a given value + Interface to be implemented by filters applied to tests. + The filter applies when running the test, after it has been + loaded, since this is the only time an ITest exists. - The value to be tested - True for success, false for failure - + - Write the constraint description to a MessageWriter + Unique Empty filter. - The writer on which the description is displayed - + - EndsWithConstraint can test whether a string ends - with an expected substring. + Indicates whether this is the EmptyFilter - + - StringConstraint is the abstract base for constraints - that operate on strings. It supports the IgnoreCase - modifier for string operations. + Indicates whether this is a top-level filter, + not contained in any other filter. - + - The expected value + Determine if a particular test passes the filter criteria. The default + implementation checks the test itself, its parents and any descendants. + + Derived classes may override this method or any of the Match methods + to change the behavior of the filter. + The test to which the filter is applied + True if the test passes the filter, otherwise false - + - Indicates whether tests should be case-insensitive + Determine if a test matches the filter expicitly. That is, it must + be a direct match of the test itself or one of it's children. + The test to which the filter is applied + True if the test matches the filter explicityly, otherwise false - + - Constructs a StringConstraint given an expected value + Determine whether the test itself matches the filter criteria, without + examining either parents or descendants. This is overridden by each + different type of filter to perform the necessary tests. - The expected value + The test to which the filter is applied + True if the filter matches the any parent of the test - + - Test whether the constraint is satisfied by a given value + Determine whether any ancestor of the test matches the filter criteria - The value to be tested - True for success, false for failure + The test to which the filter is applied + True if the filter matches the an ancestor of the test - + - Test whether the constraint is satisfied by a given string + Determine whether any descendant of the test matches the filter criteria. - The string to be tested - True for success, false for failure + The test to be matched + True if at least one descendant matches the filter criteria - + - Modify the constraint to ignore case in matching. + Create a TestFilter instance from an xml representation. - + - Initializes a new instance of the class. + Create a TestFilter from it's TNode representation - The expected string - + - Test whether the constraint is matched by the actual value. - This is a template method, which calls the IsMatch method - of the derived class. + Nested class provides an empty filter - one that always + returns true when called. It never matches explicitly. - - - + - Write the constraint description to a MessageWriter + Adds an XML node - The writer on which the description is displayed + True if recursive + The added XML node - + - EqualConstraint is able to compare an actual value with the - expected value provided in its constructor. Two objects are - considered equal if both are null, or if both have the same - value. NUnit has special semantics for some object types. + Adds an XML node + Parent node + True if recursive + The added XML node - + - If true, strings in error messages will be clipped + TestListener provides an implementation of ITestListener that + does nothing. It is used only through its NULL property. - + - NUnitEqualityComparer used to test equality. + Called when a test has just started + The test that is starting - + - Initializes a new instance of the class. + Called when a test case has finished - The expected value. + The result of the test - + - Flag the constraint to use a tolerance when determining equality. + Called when a test produces output for immediate display - Tolerance value to be used - Self. + A TestOutput object containing the text to display - + - Flag the constraint to use the supplied IComparer object. + Construct a new TestListener - private so it may not be used. - The IComparer object to use. - Self. - + - Flag the constraint to use the supplied IComparer object. + Get a listener that does nothing - The IComparer object to use. - Self. - + - Flag the constraint to use the supplied IComparer object. + TestProgressReporter translates ITestListener events into + the async callbacks that are used to inform the client + software about the progress of a test run. - The IComparer object to use. - Self. - + - Flag the constraint to use the supplied Comparison object. + Initializes a new instance of the class. - The IComparer object to use. - Self. + The callback handler to be used for reporting progress. - + - Flag the constraint to use the supplied IEqualityComparer object. + Called when a test has just started - The IComparer object to use. - Self. + The test that is starting - + - Flag the constraint to use the supplied IEqualityComparer object. + Called when a test has finished. Sends a result summary to the callback. + to - The IComparer object to use. - Self. + The result of the test - + - Test whether the constraint is satisfied by a given value + Called when a test produces output for immediate display - The value to be tested - True for success, false for failure + A TestOutput object containing the text to display - + - Write a failure message. Overridden to provide custom - failure messages for EqualConstraint. + Returns the parent test item for the targer test item if it exists - The MessageWriter to write to + + parent test item - + - Write description of this constraint + Makes a string safe for use as an attribute, replacing + characters characters that can't be used with their + corresponding xml representations. - The MessageWriter to write to + The string to be used + A new string with the _values replaced - + - Display the failure information for two collections that did not match. + ParameterizedFixtureSuite serves as a container for the set of test + fixtures created from a given Type using various parameters. - The MessageWriter on which to display - The expected collection. - The actual collection - The depth of this failure in a set of nested collections - + - Displays a single line showing the types and sizes of the expected - and actual enumerations, collections or arrays. If both are identical, - the value is only shown once. + Initializes a new instance of the class. - The MessageWriter on which to display - The expected collection or array - The actual collection or array - The indentation level for the message line + The ITypeInfo for the type that represents the suite. - + - Displays a single line showing the point in the expected and actual - arrays at which the comparison failed. If the arrays have different - structures or dimensions, both values are shown. + Gets a string representing the type of test - The MessageWriter on which to display - The expected array - The actual array - Index of the failure point in the underlying collections - The indentation level for the message line + - + - Display the failure information for two IEnumerables that did not match. + ParameterizedMethodSuite holds a collection of individual + TestMethods with their arguments applied. - The MessageWriter on which to display - The expected enumeration. - The actual enumeration - The depth of this failure in a set of nested collections - + - Flag the constraint to ignore case and return self. + Construct from a MethodInfo + - + - Flag the constraint to suppress string clipping - and return self. + Gets a string representing the type of test + - + - Flag the constraint to compare arrays as collections - and return self. + SetUpFixture extends TestSuite and supports + Setup and TearDown methods. - + - Switches the .Within() modifier to interpret its tolerance as - a distance in representable values (see remarks). + Initializes a new instance of the class. - Self. - - Ulp stands for "unit in the last place" and describes the minimum - amount a given value can change. For any integers, an ulp is 1 whole - digit. For floating point values, the accuracy of which is better - for smaller numbers and worse for larger numbers, an ulp depends - on the size of the number. Using ulps for comparison of floating - point results instead of fixed tolerances is safer because it will - automatically compensate for the added inaccuracy of larger numbers. - + The type. - + - Switches the .Within() modifier to interpret its tolerance as - a percentage that the actual values is allowed to deviate from - the expected value. + The Test abstract class represents a test within the framework. - Self - + - Causes the tolerance to be interpreted as a TimeSpan in days. + Static value to seed ids. It's started at 1000 so any + uninitialized ids will stand out. - Self - + - Causes the tolerance to be interpreted as a TimeSpan in hours. + The SetUp methods. - Self - + - Causes the tolerance to be interpreted as a TimeSpan in minutes. + The teardown methods - Self - + - Causes the tolerance to be interpreted as a TimeSpan in seconds. + Used to cache the declaring type for this MethodInfo - Self - + - Causes the tolerance to be interpreted as a TimeSpan in milliseconds. + Method property backing field - Self - + - Causes the tolerance to be interpreted as a TimeSpan in clock ticks. + Constructs a test given its name - Self + The name of the test - + - EqualityAdapter class handles all equality comparisons - that use an IEqualityComparer, IEqualityComparer<T> - or a ComparisonAdapter. + Constructs a test given the path through the + test hierarchy to its parent and a name. + The parent tests full name + The name of the test - + - Compares two objects, returning true if they are equal + TODO: Documentation needed for constructor + - + - Returns true if the two objects can be compared by this adapter. - The base adapter cannot handle IEnumerables except for strings. + Construct a test from a MethodInfo + - + - Returns an EqualityAdapter that wraps an IComparer. + Gets or sets the id of the test + - + - Returns an EqualityAdapter that wraps an IEqualityComparer. + Gets or sets the name of the test - + - Returns an EqualityAdapter that wraps an IEqualityComparer<T>. + Gets or sets the fully qualified name of the test + - + - Returns an EqualityAdapter that wraps an IComparer<T>. + Gets the name of the class where this test was declared. + Returns null if the test is not associated with a class. - + - Returns an EqualityAdapter that wraps a Comparison<T>. + Gets the name of the method implementing this test. + Returns null if the test is not implemented as a method. - + - EqualityAdapter that wraps an IComparer. + Gets the TypeInfo of the fixture used in running this test + or null if no fixture type is associated with it. - + - Returns true if the two objects can be compared by this adapter. - Generic adapter requires objects of the specified type. + Gets a MethodInfo for the method implementing this test. + Returns null if the test is not implemented as a method. - + - EqualityAdapter that wraps an IComparer. + Whether or not the test should be run - + - EqualityAdapterList represents a list of EqualityAdapters - in a common class across platforms. + Gets the name used for the top-level element in the + XML representation of this test - + - ExactCountConstraint applies another constraint to each - item in a collection, succeeding only if a specified - number of items succeed. + Gets a string representing the type of test. Used as an attribute + value in the XML representation of a test and has no other + function in the framework. - + - Construct an ExactCountConstraint on top of an existing constraint + Gets a count of test cases represented by + or contained under this test. - - - + - Apply the item constraint to each item in the collection, - succeeding only if the expected number of items pass. + Gets the properties for this test - - - + - Write a description of this constraint to a MessageWriter + Returns true if this is a TestSuite - - + - ExactTypeConstraint is used to test that an object - is of the exact type provided in the constructor + Gets a bool indicating whether the current test + has any descendant tests. - + - Construct an ExactTypeConstraint for a given Type + Gets the parent as a Test object. + Used by the core to set the parent. - The expected Type. - + - Test that an object is of the exact type specified + Gets this test's child tests - The actual value. - True if the tested object is of the exact type provided, otherwise false. + A list of child tests - + - Write the description of this constraint to a MessageWriter + Gets or sets a fixture object for running this test. - The MessageWriter to use - + - ExceptionTypeConstraint is a special version of ExactTypeConstraint - used to provided detailed info about the exception thrown in - an error message. + Static prefix used for ids in this AppDomain. + Set by FrameworkController. - + - Constructs an ExceptionTypeConstraint + Gets or Sets the Int value representing the seed for the RandomGenerator + - + - Write the actual value for a failing constraint test to a - MessageWriter. Overriden to write additional information - in the case of an Exception. + Creates a TestResult for this test. - The MessageWriter to use + A TestResult suitable for this type of test. - + - FailurePoint class represents one point of failure - in an equality test. + Modify a newly constructed test by applying any of NUnit's common + attributes, based on a supplied ICustomAttributeProvider, which is + usually the reflection element from which the test was constructed, + but may not be in some instances. The attributes retrieved are + saved for use in subsequent operations. + An object implementing ICustomAttributeProvider - + - The location of the failure + Add standard attributes and members to a test node. + + - + - The expected value + Returns the Xml representation of the test + If true, include child tests recursively + - + - The actual value + Returns an XmlNode representing the current result after + adding it as a child of the supplied parent node. + The parent node. + If true, descendant results are included + - + - Indicates whether the expected value is valid + Compares this test to another test for sorting purposes + The other test + Value of -1, 0 or +1 depending on whether the current test is less than, equal to or greater than the other test - + - Indicates whether the actual value is valid + TestAssembly is a TestSuite that represents the execution + of tests in a managed assembly. - + - FailurePointList represents a set of FailurePoints - in a cross-platform way. + Initializes a new instance of the class + specifying the Assembly and the path from which it was loaded. + The assembly this test represents. + The path used to load the assembly. - + - FalseConstraint tests that the actual value is false + Initializes a new instance of the class + for a path which could not be loaded. + The path used to load the assembly. - + - Initializes a new instance of the class. + Gets the Assembly represented by this instance. - - Helper routines for working with floating point numbers - - - The floating point comparison code is based on this excellent article: - http://www.cygnus-software.com/papers/comparingfloats/comparingfloats.htm - - - "ULP" means Unit in the Last Place and in the context of this library refers to - the distance between two adjacent floating point numbers. IEEE floating point - numbers can only represent a finite subset of natural numbers, with greater - accuracy for smaller numbers and lower accuracy for very large numbers. - - - If a comparison is allowed "2 ulps" of deviation, that means the values are - allowed to deviate by up to 2 adjacent floating point values, which might be - as low as 0.0000001 for small numbers or as high as 10.0 for large numbers. - - - - - Compares two floating point values for equality - First floating point value to be compared - Second floating point value t be compared - - Maximum number of representable floating point values that are allowed to - be between the left and the right floating point values - - True if both numbers are equal or close to being equal - - - Floating point values can only represent a finite subset of natural numbers. - For example, the values 2.00000000 and 2.00000024 can be stored in a float, - but nothing inbetween them. - - - This comparison will count how many possible floating point values are between - the left and the right number. If the number of possible values between both - numbers is less than or equal to maxUlps, then the numbers are considered as - being equal. - - - Implementation partially follows the code outlined here: - http://www.anttirt.net/2007/08/19/proper-floating-point-comparisons/ - - - - - Compares two double precision floating point values for equality - First double precision floating point value to be compared - Second double precision floating point value t be compared - - Maximum number of representable double precision floating point values that are - allowed to be between the left and the right double precision floating point values - - True if both numbers are equal or close to being equal - - - Double precision floating point values can only represent a limited series of - natural numbers. For example, the values 2.0000000000000000 and 2.0000000000000004 - can be stored in a double, but nothing inbetween them. - - - This comparison will count how many possible double precision floating point - values are between the left and the right number. If the number of possible - values between both numbers is less than or equal to maxUlps, then the numbers - are considered as being equal. - - - Implementation partially follows the code outlined here: - http://www.anttirt.net/2007/08/19/proper-floating-point-comparisons/ - - + + + Gets the name used for the top-level element in the + XML representation of this test + - + - Reinterprets the memory contents of a floating point value as an integer value + TestFixture is a surrogate for a user test fixture class, + containing one or more tests. - - Floating point value whose memory contents to reinterpret - - - The memory contents of the floating point value interpreted as an integer - - + - Reinterprets the memory contents of a double precision floating point - value as an integer value + Initializes a new instance of the class. - - Double precision floating point value whose memory contents to reinterpret - - - The memory contents of the double precision floating point value - interpreted as an integer - + Type of the fixture. - + - Reinterprets the memory contents of an integer as a floating point value + The TestMethod class represents a Test implemented as a method. - Integer value whose memory contents to reinterpret - - The memory contents of the integer value interpreted as a floating point value - - + - Reinterprets the memory contents of an integer value as a double precision - floating point value + The ParameterSet used to create this test method - Integer whose memory contents to reinterpret - - The memory contents of the integer interpreted as a double precision - floating point value - - - Union of a floating point variable and an integer + + + Initializes a new instance of the class. + + The method to be used as a test. - - The union's value as a floating point variable + + + Initializes a new instance of the class. + + The method to be used as a test. + The suite or fixture to which the new test will be added - - The union's value as an integer + + + Overridden to return a TestCaseResult. + + A TestResult for this test. - - The union's value as an unsigned integer + + + Gets a bool indicating whether the current test + has any descendant tests. + - - Union of a double precision floating point variable and a long + + + Returns a TNode representing the current result after + adding it as a child of the supplied parent node. + + The parent node. + If true, descendant results are included + - - The union's value as a double precision floating point variable + + + Gets this test's child tests + + A list of child tests - - The union's value as a long + + + Gets the name used for the top-level element in the + XML representation of this test + - - The union's value as an unsigned long + + + Returns the name of the method + - + - Tests whether a value is greater than the value supplied to its constructor + TestSuite represents a composite test, which contains other tests. - + - The value against which a comparison is to be made + Our collection of child tests - + - Initializes a new instance of the class. + Initializes a new instance of the class. - The expected value. + The name of the suite. - + - Write the constraint description to a MessageWriter + Initializes a new instance of the class. - The writer on which the description is displayed + Name of the parent suite. + The name of the suite. - + - Test whether the constraint is satisfied by a given value + Initializes a new instance of the class. - The value to be tested - True for success, false for failure + Type of the fixture. - + - Tests whether a value is greater than or equal to the value supplied to its constructor + Initializes a new instance of the class. + Type of the fixture. - + - The value against which a comparison is to be made + Sorts tests under this suite. - + - Initializes a new instance of the class. + Adds a test to the suite. - The expected value. + The test. - + - Write the constraint description to a MessageWriter + Gets this test's child tests - The writer on which the description is displayed + The list of child tests - + - Test whether the constraint is satisfied by a given value + Gets a count of test cases represented by + or contained under this test. - The value to be tested - True for success, false for failure + - + - InstanceOfTypeConstraint is used to test that an object - is of the same type provided or derived from it. + The arguments to use in creating the fixture - + - Construct an InstanceOfTypeConstraint for the type provided + Set to true to suppress sorting this suite's contents - The expected Type - + - Test whether an object is of the specified type or a derived type + Overridden to return a TestSuiteResult. - The object to be tested - True if the object is of the provided type or derives from it, otherwise false. + A TestResult for this test. - + - Write a description of this constraint to a MessageWriter + Gets a bool indicating whether the current test + has any descendant tests. - The MessageWriter to use - + - Tests whether a value is less than the value supplied to its constructor + Gets the name used for the top-level element in the + XML representation of this test - + - The value against which a comparison is to be made + Returns an XmlNode representing the current result after + adding it as a child of the supplied parent node. + The parent node. + If true, descendant results are included + - + - Initializes a new instance of the class. + Check that setup and teardown methods marked by certain attributes + meet NUnit's requirements and mark the tests not runnable otherwise. - The expected value. + The attribute type to check for - + - Write the constraint description to a MessageWriter + ThreadUtility provides a set of static methods convenient + for working with threads. - The writer on which the description is displayed - + - Test whether the constraint is satisfied by a given value + Do our best to Kill a thread - The value to be tested - True for success, false for failure + The thread to kill - + - Tests whether a value is less than or equal to the value supplied to its constructor + Do our best to kill a thread, passing state info + The thread to kill + Info for the ThreadAbortException handler - + - The value against which a comparison is to be made + TypeHelper provides static methods that operate on Types. - + - Initializes a new instance of the class. + A special value, which is used to indicate that BestCommonType() method + was unable to find a common type for the specified arguments. - The expected value. - + - Write the constraint description to a MessageWriter + Gets the display name for a Type as used by NUnit. - The writer on which the description is displayed + The Type for which a display name is needed. + The display name for the Type - + - Test whether the constraint is satisfied by a given value + Gets the display name for a Type as used by NUnit. - The value to be tested - True for success, false for failure + The Type for which a display name is needed. + The arglist provided. + The display name for the Type - + - MessageWriter is the abstract base for classes that write - constraint descriptions and messages in some form. The - class has separate methods for writing various components - of a message, allowing implementations to tailor the - presentation as needed. + Returns the best fit for a common type to be used in + matching actual arguments to a methods Type parameters. + The first type. + The second type. + Either type1 or type2, depending on which is more general. - + - Construct a MessageWriter given a culture + Determines whether the specified type is numeric. + The type to be examined. + + true if the specified type is numeric; otherwise, false. + - + - Method to write single line message with optional args, usually - written to precede the general failure message. + Convert an argument list to the required parameter types. + Currently, only widening numeric conversions are performed. - The message to be written - Any arguments used in formatting the message + An array of args to be converted + A ParameterInfo[] whose types will be used as targets - + - Method to write single line message with optional args, usually - written to precede the general failure message, at a givel - indentation level. + Determines whether this instance can deduce type args for a generic type from the supplied arguments. - The indentation level of the message - The message to be written - Any arguments used in formatting the message + The type to be examined. + The arglist. + The type args to be used. + + true if this the provided args give sufficient information to determine the type args to be used; otherwise, false. + - + - Display Expected and Actual lines for a constraint. This - is called by MessageWriter's default implementation of - WriteMessageTo and provides the generic two-line display. + Gets the _values for an enumeration, using Enum.GetTypes + where available, otherwise through reflection. - The constraint that failed + + - + - Display Expected and Actual lines for given values. This - method may be called by constraints that need more control over - the display of actual and expected values than is provided - by the default implementation. + Gets the ids of the _values for an enumeration, + using Enum.GetNames where available, otherwise + through reflection. - The expected value - The actual value causing the failure + + - + - Display Expected and Actual lines for given values, including - a tolerance value on the Expected line. + Represents the result of running a single test case. - The expected value - The actual value causing the failure - The tolerance within which the test was made - + - Display the expected and actual string values on separate lines. - If the mismatch parameter is >=0, an additional line is displayed - line containing a caret that points to the mismatch point. + Construct a TestCaseResult based on a TestMethod - The expected string value - The actual string value - The point at which the strings don't match or -1 - If true, case is ignored in locating the point where the strings differ - If true, the strings should be clipped to fit the line + A TestMethod to which the result applies. - + - Writes the text for a connector. + Gets the number of test cases that failed + when running the test and all its children. - The connector. - + - Writes the text for a predicate. + Gets the number of test cases that passed + when running the test and all its children. - The predicate. - + - Writes the text for an expected value. + Gets the number of test cases that were skipped + when running the test and all its children. - The expected value. - + - Writes the text for a modifier + Gets the number of test cases that were inconclusive + when running the test and all its children. - The modifier. - + - Writes the text for an actual value. + Indicates whether this result has any child results. - The actual value. - + - Writes the text for a generalized value. + Gets the collection of child results. - The value. - + - Writes the text for a collection value, - starting at a particular point, to a max length + Represents the result of running a test suite - The collection containing elements to write. - The starting point of the elements to write - The maximum number of elements to write - + - Abstract method to get the max line length + Construct a TestSuiteResult base on a TestSuite + The TestSuite to which the result applies - + - Static methods used in creating messages + Gets the number of test cases that failed + when running the test and all its children. - + - Static string used when strings are clipped + Gets the number of test cases that passed + when running the test and all its children. - + - Returns the representation of a type as used in NUnitLite. - This is the same as Type.ToString() except for arrays, - which are displayed with their declared sizes. + Gets the number of test cases that were skipped + when running the test and all its children. - - - + - Converts any control characters in a string - to their escaped representation. + Gets the number of test cases that were inconclusive + when running the test and all its children. - The string to be converted - The converted string - + - Return the a string representation for a set of indices into an array + Indicates whether this result has any child results. - Array of indices for which a string is needed - + - Get an array of indices representing the point in a enumerable, - collection or array corresponding to a single int index into the - collection. + Gets the collection of child results. - The collection to which the indices apply - Index in the collection - Array of indices - + - Clip a string to a given length, starting at a particular offset, returning the clipped - string with ellipses representing the removed parts + Adds a child result to this result, setting this result's + ResultState to Failure if the child result failed. - The string to be clipped - The maximum permitted length of the result string - The point at which to start clipping - The clipped string + The result to be added - + - Clip the expected and actual strings in a coordinated fashion, - so that they may be displayed together. + The TestFixtureData class represents a set of arguments + and other parameter info to be used for a parameterized + fixture. It is derived from TestFixtureParameters and adds a + fluent syntax for use in initializing the fixture. - - - - - + - Shows the position two strings start to differ. Comparison - starts at the start index. + Initializes a new instance of the class. - The expected string - The actual string - The index in the strings at which comparison should start - Boolean indicating whether case should be ignored - -1 if no mismatch found, or the index where mismatch found + The arguments. - + - NaNConstraint tests that the actual value is a double or float NaN + Initializes a new instance of the class. + + The argument. + + + + Initializes a new instance of the class. + The first argument. + The second argument. - + - Test that the actual value is an NaN + Initializes a new instance of the class. - + The first argument. + The second argument. + The third argument. + + + + Marks the test fixture as explicit. + + + + + Marks the test fixture as explicit, specifying the reason. + + + + + Ignores this TestFixture, specifying the reason. + + The reason. - + + + Asserts on Directories + + + + + The Equals method throws an InvalidOperationException. This is done + to make sure there is no mistake by calling this function. + + + + + + + override the default ReferenceEquals to throw an InvalidOperationException. This + implementation makes sure there is no mistake in calling this function + as part of Assert. + + + + + - Write the constraint description to a specified writer + Verifies that two directories are equal. Two directories are considered + equal if both are null, or if both point to the same directory. + If they are not equal an is thrown. - + A directory containing the value that is expected + A directory containing the actual value + The message to display if the directories are not equal + Arguments to be used in formatting the message - + - NoItemConstraint applies another constraint to each - item in a collection, failing if any of them succeeds. + Verifies that two directories are equal. Two directories are considered + equal if both are null, or if both point to the same directory. + If they are not equal an is thrown. + A directory containing the value that is expected + A directory containing the actual value - + - Construct a NoItemConstraint on top of an existing constraint + Asserts that two directories are not equal. If they are equal + an is thrown. - + A directory containing the value that is expected + A directory containing the actual value + The message to display if directories are not equal + Arguments to be used in formatting the message - + - Apply the item constraint to each item in the collection, - failing if any item fails. + Asserts that two directories are not equal. If they are equal + an is thrown. - - + A directory containing the value that is expected + A directory containing the actual value - + - Write a description of this constraint to a MessageWriter + Asserts that the directory exists. If it does not exist + an is thrown. - + A directory containing the actual value + The message to display if directories are not equal + Arguments to be used in formatting the message - + - NotConstraint negates the effect of some other constraint + Asserts that the directory exists. If it does not exist + an is thrown. + A directory containing the actual value - + - Initializes a new instance of the class. + Asserts that the directory exists. If it does not exist + an is thrown. - The base constraint to be negated. + The path to a directory containing the actual value + The message to display if directories are not equal + Arguments to be used in formatting the message - + - Test whether the constraint is satisfied by a given value + Asserts that the directory exists. If it does not exist + an is thrown. - The value to be tested - True for if the base constraint fails, false if it succeeds + The path to a directory containing the actual value - + - Write the constraint description to a MessageWriter + Asserts that the directory does not exist. If it does exist + an is thrown. - The writer on which the description is displayed + A directory containing the actual value + The message to display if directories are not equal + Arguments to be used in formatting the message - + - Write the actual value for a failing constraint test to a MessageWriter. + Asserts that the directory does not exist. If it does exist + an is thrown. - The writer on which the actual value is displayed + A directory containing the actual value - + - NullConstraint tests that the actual value is null + Asserts that the directory does not exist. If it does exist + an is thrown. + The path to a directory containing the actual value + The message to display if directories are not equal + Arguments to be used in formatting the message - + - Initializes a new instance of the class. + Asserts that the directory does not exist. If it does exist + an is thrown. + The path to a directory containing the actual value - + - NullEmptyStringConstraint tests whether a string is either null or empty. + Helper class with properties and methods that supply + a number of constraints used in Asserts. - + - Constructs a new NullOrEmptyStringConstraint + Returns a ConstraintExpression that negates any + following constraint. - + - Test whether the constraint is satisfied by a given value + Returns a constraint that succeeds if the value + is a file or directory and it exists. - The value to be tested - True for success, false for failure - + - Write the constraint description to a MessageWriter + Returns a new CollectionContainsConstraint checking for the + presence of a particular object in the collection. - The writer on which the description is displayed - + - The Numerics class contains common operations on numeric values. + Returns a new ContainsConstraint. This constraint + will, in turn, make use of the appropriate second-level + constraint, depending on the type of the actual argument. + This overload is only used if the item sought is a string, + since any other type implies that we are looking for a + collection member. - + - Checks the type of the object, returning true if - the object is a numeric type. + Returns a constraint that succeeds if the actual + value starts with the substring supplied as an argument. - The object to check - true if the object is a numeric type - + - Checks the type of the object, returning true if - the object is a floating point numeric type. + Returns a constraint that succeeds if the actual + value ends with the substring supplied as an argument. - The object to check - true if the object is a floating point numeric type - + - Checks the type of the object, returning true if - the object is a fixed point numeric type. + Returns a constraint that succeeds if the actual + value matches the regular expression supplied as an argument. - The object to check - true if the object is a fixed point numeric type - + - Test two numeric values for equality, performing the usual numeric - conversions and using a provided or default tolerance. If the tolerance - provided is Empty, this method may set it to a default tolerance. + Abstract base for Exceptions that terminate a test and provide a ResultState. - The expected value - The actual value - A reference to the tolerance in effect - True if the values are equal - + + The error message that explains + the reason for the exception + + + The error message that explains + the reason for the exception + The exception that caused the + current exception + + - Compare two numeric values, performing the usual numeric conversions. + Serialization Constructor - The expected value - The actual value - The relationship of the values to each other - + - NUnitComparer encapsulates NUnit's default behavior - in comparing two objects. + Gets the ResultState provided by this exception - + - Compares two objects + When implemented by an attribute, this interface implemented to provide actions to execute before and after tests. - - - - + - Returns the default NUnitComparer. + Executed before each test is run + The test that is going to be run. - + - Generic version of NUnitComparer + Executed after each test is run - + The test that has just been run. - + - Compare two objects of the same type + Provides the target for the action attribute + The target for the action attribute - + - NUnitEqualityComparer encapsulates NUnit's handling of - equality tests between objects. + Delegate used by tests that execute code and + capture any thrown exception. - + - + AssertionHelper is an optional base class for user tests, + allowing the use of shorter ids for constraints and + asserts and avoiding conflict with the definition of + , from which it inherits much of its + behavior, in certain mock object frameworks. - + - Compares two objects for equality within a tolerance - - The first object to compare - The second object to compare - The tolerance to use in the comparison - + Asserts that a condition is true. If the condition is false the method throws + an . Works Identically to + . + + The evaluated condition + The message to display if the condition is false + Arguments to be used in formatting the message - + - If true, all string comparisons will ignore case + Asserts that a condition is true. If the condition is false the method throws + an . Works Identically to . + The evaluated condition - + - If true, arrays will be treated as collections, allowing - those of different dimensions to be compared + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and throwing an assertion exception on failure. + A Constraint expression to be applied + An ActualValueDelegate returning the value to be tested - + - Comparison objects used in comparisons for some constraints. + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and throwing an assertion exception on failure. + An ActualValueDelegate returning the value to be tested + A Constraint expression to be applied + The message that will be displayed on failure + Arguments to be used in formatting the message - + - List of points at which a failure occured. + Asserts that the code represented by a delegate throws an exception + that satisfies the constraint provided. + A TestDelegate to be executed + A ThrowsConstraint used in the test - + - RecursionDetector used to check for recursion when - evaluating self-referencing enumerables. + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and throwing an assertion exception on failure. + A Constraint to be applied + The actual value to test - + - Compares two objects for equality within a tolerance, setting - the tolerance to the actual tolerance used if an empty - tolerance is supplied. + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and throwing an assertion exception on failure. + A Constraint expression to be applied + The actual value to test + The message that will be displayed on failure + Arguments to be used in formatting the message - + - Helper method to compare two arrays + Returns a ListMapper based on a collection. + The original collection + - + - Method to compare two DirectoryInfo objects + Provides static methods to express the assumptions + that must be met for a test to give a meaningful + result. If an assumption is not met, the test + should produce an inconclusive result. - first directory to compare - second directory to compare - true if equivalent, false if not - + - Returns the default NUnitEqualityComparer + The Equals method throws an InvalidOperationException. This is done + to make sure there is no mistake by calling this function. + The left object. + The right object. + Not applicable - + - Gets and sets a flag indicating whether case should - be ignored in determining equality. + override the default ReferenceEquals to throw an InvalidOperationException. This + implementation makes sure there is no mistake in calling this function + as part of Assert. + The left object. + The right object. - + - Gets and sets a flag indicating that arrays should be - compared as collections, without regard to their shape. + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and throwing an InconclusiveException on failure. + The Type being compared. + An ActualValueDelegate returning the value to be tested + A Constraint expression to be applied - + - Gets the list of external comparers to be used to - test for equality. They are applied to members of - collections, in place of NUnit's own logic. + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and throwing an InconclusiveException on failure. + The Type being compared. + An ActualValueDelegate returning the value to be tested + A Constraint expression to be applied + The message that will be displayed on failure + Arguments to be used in formatting the message - + - Gets the list of failure points for the last Match performed. - The list consists of objects to be interpreted by the caller. - This generally means that the caller may only make use of - objects it has placed on the list at a particular depthy. + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and throwing an InconclusiveException on failure. + The Type being compared. + An ActualValueDelegate returning the value to be tested + A Constraint expression to be applied + A function to build the message included with the Exception - + - RecursionDetector detects when a comparison - between two enumerables has reached a point - where the same objects that were previously - compared are again being compared. This allows - the caller to stop the comparison if desired. - + Asserts that a condition is true. If the condition is false the method throws + an . + + The evaluated condition + The message to display if the condition is false + Arguments to be used in formatting the message - + - Check whether two objects have previously - been compared, returning true if they have. - The two objects are remembered, so that a - second call will always return true. + Asserts that a condition is true. If the condition is false the + method throws an . + The evaluated condition - + - Represents a constraint that succeeds if all the - members of a collection match a base constraint. - + Asserts that a condition is true. If the condition is false the method throws + an . +
+ The evaluated condition + A function to build the message included with the Exception
- + - Abstract base for operators that indicate how to - apply a constraint to items in a collection. - + Asserts that a condition is true. If the condition is false the method throws + an . +
+ A lambda that returns a Boolean + The message to display if the condition is false + Arguments to be used in formatting the message
- + - PrefixOperator takes a single constraint and modifies - it's action in some way. + Asserts that a condition is true. If the condition is false the method throws + an . + A lambda that returns a Boolean - + - The ConstraintOperator class is used internally by a - ConstraintBuilder to represent an operator that - modifies or combines constraints. - - Constraint operators use left and right precedence - values to determine whether the top operator on the - stack should be reduced before pushing a new operator. - + Asserts that a condition is true. If the condition is false the method throws + an . +
+ A lambda that returns a Boolean + A function to build the message included with the Exception
- + - The precedence value used when the operator - is about to be pushed to the stack. + Asserts that the code represented by a delegate throws an exception + that satisfies the constraint provided. + A TestDelegate to be executed + A ThrowsConstraint used in the test - + - The precedence value used when the operator - is on the top of the stack. + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and throwing an InconclusiveException on failure. + The Type being compared. + The actual value to test + A Constraint to be applied - + - Reduce produces a constraint from the operator and - any arguments. It takes the arguments from the constraint - stack and pushes the resulting constraint on it. + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and throwing an InconclusiveException on failure. - + The Type being compared. + The actual value to test + A Constraint expression to be applied + The message that will be displayed on failure + Arguments to be used in formatting the message - + - The syntax element preceding this operator + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and throwing an InconclusiveException on failure. + The Type being compared. + The actual value to test + A Constraint to be applied + A function to build the message included with the Exception - + - The syntax element folowing this operator + Attribute used to apply a category to a test - + - The precedence value used when the operator - is about to be pushed to the stack. + The name of the category - + - The precedence value used when the operator - is on the top of the stack. + Construct attribute for a given category based on + a name. The name may not contain the characters ',', + '+', '-' or '!'. However, this is not checked in the + constructor since it would cause an error to arise at + as the test was loaded without giving a clear indication + of where the problem is located. The error is handled + in NUnitFramework.cs by marking the test as not + runnable. + The name of the category - + - Reduce produces a constraint from the operator and - any arguments. It takes the arguments from the constraint - stack and pushes the resulting constraint on it. + Protected constructor uses the Type name as the name + of the category. - - + - Returns the constraint created by applying this - prefix to another constraint. + The name of the category - - - + - Constructs a CollectionOperator + Modifies a test by adding a category to it. + The test to modify - + - Returns a constraint that will apply the argument - to the members of a collection, succeeding if - they all succeed. + Marks a test to use a combinatorial join of any argument + data provided. Since this is the default, the attribute is + optional. - + - Operator that requires both it's arguments to succeed + Default constructor - + - Abstract base class for all binary operators + CultureAttribute is used to mark a test fixture or an + individual method as applying to a particular Culture only. - + - Reduce produces a constraint from the operator and - any arguments. It takes the arguments from the constraint - stack and pushes the resulting constraint on it. + Constructor with no cultures specified, for use + with named property syntax. - - + - Abstract method that produces a constraint by applying - the operator to its left and right constraint arguments. + Constructor taking one or more cultures + Comma-deliminted list of cultures - + - Gets the left precedence of the operator + Causes a test to be skipped if this CultureAttribute is not satisfied. + The test to modify - + - Gets the right precedence of the operator + Tests to determine if the current culture is supported + based on the properties of this attribute. + True, if the current culture is supported - + - Construct an AndOperator + Test to determine if the a particular culture or comma- + delimited set of cultures is in use. + Name of the culture or comma-separated list of culture ids + True if the culture is in use on the system - + - Apply the operator to produce an AndConstraint + Test to determine if one of a collection of cultures + is being used currently. + + - + - Operator that tests for the presence of a particular attribute - on a type and optionally applies further tests to the attribute. + The abstract base class for all data-providing attributes + defined by NUnit. Used to select all data sources for a + method, class or parameter. - + - Abstract base class for operators that are able to reduce to a - constraint whether or not another syntactic element follows. + Default constructor - + - Construct an AttributeOperator for a particular Type + Used to mark a field for use as a datapoint when executing a theory + within the same fixture that requires an argument of the field's Type. - The Type of attribute tested - + - Reduce produces a constraint from the operator and - any arguments. It takes the arguments from the constraint - stack and pushes the resulting constraint on it. + Used to mark a field, property or method providing a set of datapoints to + be used in executing any theories within the same fixture that require an + argument of the Type provided. The data source may provide an array of + the required Type or an . + Synonymous with DatapointSourceAttribute. - + - CollectionOrderedConstraint is used to test whether a collection is ordered. + Used to mark a field, property or method providing a set of datapoints to + be used in executing any theories within the same fixture that require an + argument of the Type provided. The data source may provide an array of + the required Type or an . + Synonymous with DatapointsAttribute. - + - Construct a CollectionOrderedConstraint + Attribute used to provide descriptive text about a + test case or fixture. - + - Modifies the constraint to use an IComparer and returns self. + Construct a description Attribute + The text of the description - + - Modifies the constraint to use an IComparer<T> and returns self. + ExplicitAttribute marks a test or test fixture so that it will + only be run if explicitly executed from the gui or command line + or if it is included by use of a filter. The test will not be + run simply because an enclosing suite is run. - + - Modifies the constraint to use a Comparison<T> and returns self. + Default constructor - + - Modifies the constraint to test ordering by the value of - a specified property and returns self. + Constructor with a reason + The reason test is marked explicit - + - Test whether the collection is ordered + Modifies a test by marking it as explicit. - - + The test to modify - + - Write a description of the constraint to a MessageWriter + Attribute used to mark a test that is to be ignored. + Ignored tests result in a warning message when the + tests are run. - - + - Returns the string representation of the constraint. + Constructs the attribute giving a reason for ignoring the test - + The reason for ignoring the test - + - If used performs a reverse comparison + - + - Represents a constraint that succeeds if the specified - count of members of a collection match a base constraint. + The date in the future to stop ignoring the test as a string in UTC time. + For example for a date and time, "2014-12-25 08:10:00Z" or for just a date, + "2014-12-25". If just a date is given, the Ignore will expire at midnight UTC. + + Once the ignore until date has passed, the test will be marked + as runnable. Tests with an ignore until date will have an IgnoreUntilDate + property set which will appear in the test results. + + The string does not contain a valid string representation of a date and time. - + - Construct an ExactCountOperator for a specified count + Modifies a test by marking it as Ignored. - The expected count + The test to modify - + - Returns a constraint that will apply the argument - to the members of a collection, succeeding if - none of them succeed. + Abstract base for Attributes that are used to include tests + in the test run based on environmental settings. - + - Represents a constraint that succeeds if none of the - members of a collection match a base constraint. + Constructor with no included items specified, for use + with named property syntax. - + - Returns a constraint that will apply the argument - to the members of a collection, succeeding if - none of them succeed. + Constructor taking one or more included items + Comma-delimited list of included items - + - Negates the test of the constraint it wraps. + Name of the item that is needed in order for + a test to run. Multiple items may be given, + separated by a comma. - + - Constructs a new NotOperator + Name of the item to be excluded. Multiple items + may be given, separated by a comma. - + - Returns a NotConstraint applied to its argument. + The reason for including or excluding the test - + - Operator that requires at least one of it's arguments to succeed + Summary description for MaxTimeAttribute. - + - Construct an OrOperator + Construct a MaxTimeAttribute, given a time in milliseconds. + The maximum elapsed time in milliseconds - + - Apply the operator to produce an OrConstraint + The abstract base class for all custom attributes defined by NUnit. - - - Operator used to test for the presence of a named Property - on an object and optionally apply further tests to the - value of that property. + + + Default constructor - + - Constructs a PropOperator for a particular named property + Marks a test to use a pairwise join of any argument + data provided. Arguments will be combined in such a + way that all possible pairs of arguments are used. - + - Reduce produces a constraint from the operator and - any arguments. It takes the arguments from the constraint - stack and pushes the resulting constraint on it. + Default constructor - - + - Gets the name of the property to which the operator applies + PlatformAttribute is used to mark a test fixture or an + individual method as applying to a particular platform only. - + - Operator that tests that an exception is thrown and - optionally applies further tests to the exception. + Constructor with no platforms specified, for use + with named property syntax. - + - Construct a ThrowsOperator + Constructor taking one or more platforms + Comma-delimited list of platforms - + - Reduce produces a constraint from the operator and - any arguments. It takes the arguments from the constraint - stack and pushes the resulting constraint on it. + Causes a test to be skipped if this PlatformAttribute is not satisfied. + The test to modify - + - Represents a constraint that simply wraps the - constraint provided as an argument, without any - further functionality, but which modifes the - order of evaluation because of its precedence. + PropertyAttribute is used to attach information to a test as a name/value pair.. - + - Constructor for the WithOperator + Construct a PropertyAttribute with a name and string value + The name of the property + The property value - + - Returns a constraint that wraps its argument + Construct a PropertyAttribute with a name and int value + The name of the property + The property value - + - OrConstraint succeeds if either member succeeds + Construct a PropertyAttribute with a name and double value + The name of the property + The property value - + - Create an OrConstraint from two other constraints + Constructor for derived classes that set the + property dictionary directly. - The first constraint - The second constraint - + - Apply the member constraints to an actual value, succeeding - succeeding as soon as one of them succeeds. + Constructor for use by derived classes that use the + name of the type as the property name. Derived classes + must ensure that the Type of the property value is + a standard type supported by the BCL. Any custom + types will cause a serialization Exception when + in the client. - The actual value - True if either constraint succeeded - + - Write a description for this contraint to a MessageWriter + Gets the property dictionary for this attribute - The MessageWriter to receive the description - + - PathConstraint serves as the abstract base of constraints - that operate on paths and provides several helper methods. + Modifies a test by adding properties to it. + The test to modify - + - The expected path used in the constraint + RandomAttribute is used to supply a set of random _values + to a single parameter of a parameterized test. - + - Flag indicating whether a caseInsensitive comparison should be made + Construct a random set of values appropriate for the Type of the + parameter on which the attribute appears, specifying only the count. + - + - Construct a PathConstraint for a give expected path + Construct a set of ints within a specified range - The expected path - + - Test whether the constraint is satisfied by a given value + Construct a set of unsigned ints within a specified range - The value to be tested - True for success, false for failure - + - Returns true if the expected path and actual path match + Construct a set of longs within a specified range - + - Returns the string representation of this constraint + Construct a set of unsigned longs within a specified range - + - Transform the provided path to its canonical form so that it - may be more easily be compared with other paths. + Construct a set of shorts within a specified range - The original path - The path in canonical form - + - Test whether one path in canonical form is under another. + Construct a set of unsigned shorts within a specified range - The first path - supposed to be the parent path - The second path - supposed to be the child path - Indicates whether case should be ignored - - + - Modifies the current instance to be case-insensitve - and returns it. + Construct a set of doubles within a specified range - + - Modifies the current instance to be case-sensitve - and returns it. + Construct a set of floats within a specified range - + - Predicate constraint wraps a Predicate in a constraint, - returning success if the predicate is true. + Construct a set of bytes within a specified range - + - Construct a PredicateConstraint from a predicate + Construct a set of sbytes within a specified range - + - Determines whether the predicate succeeds when applied - to the actual value. + Get the collection of _values to be used as arguments. - + - Writes the description to a MessageWriter + RangeAttribute is used to supply a range of _values to an + individual parameter of a parameterized test. - + - PropertyConstraint extracts a named property and uses - its value as the actual value for a chained constraint. + Construct a range of ints using default step of 1 + + - + - Initializes a new instance of the class. + Construct a range of ints specifying the step size - The name. - The constraint to apply to the property. + + + - + - Test whether the constraint is satisfied by a given value + Construct a range of unsigned ints using default step of 1 - The value to be tested - True for success, false for failure + + - + - Write the constraint description to a MessageWriter + Construct a range of unsigned ints specifying the step size - The writer on which the description is displayed + + + - + - Write the actual value for a failing constraint test to a - MessageWriter. The default implementation simply writes - the raw value of actual, leaving it to the writer to - perform any formatting. + Construct a range of longs using a default step of 1 - The writer on which the actual value is displayed + + - + - Returns the string representation of the constraint. + Construct a range of longs - + + + - + - PropertyExistsConstraint tests that a named property - exists on the object provided through Match. - - Originally, PropertyConstraint provided this feature - in addition to making optional tests on the vaue - of the property. The two constraints are now separate. + Construct a range of unsigned longs using default step of 1 + + - + - Initializes a new instance of the class. + Construct a range of unsigned longs specifying the step size - The name of the property. + + + - + - Test whether the property exists for a given object + Construct a range of doubles - The object to be tested - True for success, false for failure + + + - + - Write the constraint description to a MessageWriter + Construct a range of floats - The writer on which the description is displayed + + + - + - Write the actual value for a failing constraint test to a - MessageWriter. + RepeatAttribute may be applied to test case in order + to run it multiple times. - The writer on which the actual value is displayed - + - Returns the string representation of the constraint. + Construct a RepeatAttribute - + The number of times to run the test - + - RangeConstraint tests whether two values are within a - specified range. + Wrap a command and return the result. + The command to be wrapped + The wrapped command - + - Initializes a new instance of the class. + The test command for the RepeatAttribute - From. - To. - + - Test whether the constraint is satisfied by a given value + Initializes a new instance of the class. - The value to be tested - True for success, false for failure + The inner command. + The number of repetitions - + - Write the constraint description to a MessageWriter + Runs the test, saving a TestResult in the supplied TestExecutionContext. - The writer on which the description is displayed + The context in which the test should run. + A TestResult - + - RegexConstraint can test whether a string matches - the pattern provided. + Marks a test that must run in the MTA, causing it + to run in a separate thread if necessary. + + On methods, you may also use MTAThreadAttribute + to serve the same purpose. - + - Initializes a new instance of the class. + Construct a RequiresMTAAttribute - The pattern. - + - Test whether the constraint is satisfied by a given value + Marks a test that must run in the STA, causing it + to run in a separate thread if necessary. - The value to be tested - True for success, false for failure - + - Write the constraint description to a MessageWriter + Construct a RequiresSTAAttribute - The writer on which the description is displayed - + - ResolvableConstraintExpression is used to represent a compound - constraint being constructed at a point where the last operator - may either terminate the expression or may have additional - qualifying constraints added to it. - - It is used, for example, for a Property element or for - an Exception element, either of which may be optionally - followed by constraints that apply to the property or - exception. + Marks a test that must run on a separate thread. - + - Create a new instance of ResolvableConstraintExpression + Construct a RequiresThreadAttribute - + - Create a new instance of ResolvableConstraintExpression, - passing in a pre-populated ConstraintBuilder. + Construct a RequiresThreadAttribute, specifying the apartment - + - Resolve the current expression to a Constraint + Marks a test to use a Sequential join of any argument + data provided. Arguments will be combined into test cases, + taking the next value of each argument until all are used. - + - This operator creates a constraint that is satisfied only if both - argument constraints are satisfied. + Default constructor - + - This operator creates a constraint that is satisfied only if both - argument constraints are satisfied. + Summary description for SetCultureAttribute. - + - This operator creates a constraint that is satisfied only if both - argument constraints are satisfied. + Construct given the name of a culture + - + - This operator creates a constraint that is satisfied if either - of the argument constraints is satisfied. + Summary description for SetUICultureAttribute. - + - This operator creates a constraint that is satisfied if either - of the argument constraints is satisfied. + Construct given the name of a culture + - + - This operator creates a constraint that is satisfied if either - of the argument constraints is satisfied. + Attribute used to mark a class that contains one-time SetUp + and/or TearDown methods that apply to all the tests in a + namespace or an assembly. - + - This operator creates a constraint that is satisfied if the - argument constraint is not satisfied. + Attribute used to mark a class that contains one-time SetUp + and/or TearDown methods that apply to all the tests in a + namespace or an assembly. - + - Appends an And Operator to the expression + Attribute used to mark a class that contains one-time SetUp + and/or TearDown methods that apply to all the tests in a + namespace or an assembly. - + - Appends an Or operator to the expression. + SetUpFixtureAttribute is used to identify a SetUpFixture - + - ReusableConstraint wraps a constraint expression after - resolving it so that it can be reused consistently. + Build a SetUpFixture from type provided. Normally called for a Type + on which the attribute has been placed. + The type info of the fixture to be used. + A SetUpFixture object as a TestSuite. - + - Construct a ReusableConstraint from a constraint expression + Attribute used to identify a method that is called + immediately after each test is run. The method is + guaranteed to be called, even if an exception is thrown. - The expression to be resolved and reused - + - Converts a constraint to a ReusableConstraint + Adding this attribute to a method within a + class makes the method callable from the NUnit test runner. There is a property + called Description which is optional which you can provide a more detailed test + description. This class cannot be inherited. - The constraint to be converted - A ReusableConstraint + + + [TestFixture] + public class Fixture + { + [Test] + public void MethodToTest() + {} + + [Test(Description = "more detailed description")] + public void TestDescriptionMethod() + {} + } + + - + - Returns the string representation of the constraint. + Descriptive text for this test - A string representing the constraint - + - Resolves the ReusableConstraint by returning the constraint - that it originally wrapped. + The author of this test - A resolved constraint - + - SameAsConstraint tests whether an object is identical to - the object passed to its constructor + The type that this test is testing - + - Initializes a new instance of the class. + Modifies a test by adding a description, if not already set. - The expected object. + The test to modify - + - Test whether the constraint is satisfied by a given value + Gets or sets the expected result. - The value to be tested - True for success, false for failure + The result. - + - Write the constraint description to a MessageWriter + Returns true if an expected result has been set - The writer on which the description is displayed - + - Summary description for SamePathConstraint. + Construct a TestMethod from a given method. + The method for which a test is to be constructed. + The suite to which the test will be added. + A TestMethod - + - Initializes a new instance of the class. + TestCaseAttribute is used to mark parameterized test cases + and provide them with their arguments. - The expected path - + - Test whether the constraint is satisfied by a given value + Construct a TestCaseAttribute with a list of arguments. + This constructor is not CLS-Compliant - The expected path - The actual path - True for success, false for failure + - + - Write the constraint description to a MessageWriter + Construct a TestCaseAttribute with a single argument - The writer on which the description is displayed + - + - SamePathOrUnderConstraint tests that one path is under another + Construct a TestCaseAttribute with a two arguments + + - + - Initializes a new instance of the class. + Construct a TestCaseAttribute with a three arguments - The expected path + + + - + - Test whether the constraint is satisfied by a given value + Gets or sets the name of the test. - The expected path - The actual path - True for success, false for failure + The name of the test. - + - Write the constraint description to a MessageWriter + Gets or sets the RunState of this test case. - The writer on which the description is displayed - + - BinarySerializableConstraint tests whether - an object is serializable in binary format. + Gets the list of arguments to a test case - + - Test whether the constraint is satisfied by a given value + Gets the properties of the test case - The value to be tested - True for success, false for failure - + - Write the constraint description to a MessageWriter + Gets or sets the expected result. - The writer on which the description is displayed + The result. - + - Write the actual value for a failing constraint test to a - MessageWriter. The default implementation simply writes - the raw value of actual, leaving it to the writer to - perform any formatting. + Returns true if the expected result has been set - The writer on which the actual value is displayed - + - Returns the string representation + Gets or sets the description. + The description. - + - Represents a constraint that succeeds if any of the - members of a collection match a base constraint. + The author of this test - + - Returns a constraint that will apply the argument - to the members of a collection, succeeding if - any of them succeed. + The type that this test is testing - + - SomeItemsConstraint applies another constraint to each - item in a collection, succeeding if any of them succeeds. + Gets or sets the reason for ignoring the test - + - Construct a SomeItemsConstraint on top of an existing constraint + Gets or sets a value indicating whether this is explicit. - + + true if explicit; otherwise, false. + - + - Apply the item constraint to each item in the collection, - succeeding if any item succeeds. + Gets or sets the reason for not running the test. - - + The reason. - + - Write a description of this constraint to a MessageWriter + Gets or sets the ignore reason. When set to a non-null + non-empty value, the test is marked as ignored. - + The ignore reason. - + - StartsWithConstraint can test whether a string starts - with an expected substring. + Comma-delimited list of platforms to run the test for - + - Initializes a new instance of the class. + Comma-delimited list of platforms to not run the test for - The expected string - + - Test whether the constraint is matched by the actual value. - This is a template method, which calls the IsMatch method - of the derived class. + Gets and sets the category for this test case. + May be a comma-separated list of categories. - - - + - Write the constraint description to a MessageWriter + Performs several special conversions allowed by NUnit in order to + permit arguments with types that cannot be used in the constructor + of an Attribute such as TestCaseAttribute or to simplify their use. - The writer on which the description is displayed + The arguments to be converted + The ParameterInfo array for the method - + - SubPathConstraint tests that the actual path is under the expected path + Construct one or more TestMethods from a given MethodInfo, + using available parameter data. + The MethodInfo for which tests are to be constructed. + The suite to which the tests will be added. + One or more TestMethods - + - Initializes a new instance of the class. + TestCaseSourceAttribute indicates the source to be used to + provide test cases for a test method. - The expected path - + - Test whether the constraint is satisfied by a given value + Construct with the name of the method, property or field that will provide data - The expected path - The actual path - True for success, false for failure + The name of a static method, property or field that will provide data. - + - Write the constraint description to a MessageWriter + Construct with a Type and name - The writer on which the description is displayed + The Type that will provide data + The name of a static method, property or field that will provide data. + A set of parameters passed to the method, works only if the Source Name is a method. + If the source name is a field or property has no effect. - + - SubstringConstraint can test whether a string contains - the expected substring. + Construct with a Type and name + The Type that will provide data + The name of a static method, property or field that will provide data. - + - Initializes a new instance of the class. + Construct with a Type - The expected. + The type that will provide data - + - Test whether the constraint is satisfied by a given value + A set of parameters passed to the method, works only if the Source Name is a method. + If the source name is a field or property has no effect. - The value to be tested - True for success, false for failure - + - Write the constraint description to a MessageWriter + The name of a the method, property or fiend to be used as a source - The writer on which the description is displayed - + - ThrowsConstraint is used to test the exception thrown by - a delegate by applying a constraint to it. + A Type to be used as a source - + - Initializes a new instance of the class, - using a constraint to be applied to the exception. + Gets or sets the category associated with every fixture created from + this attribute. May be a single category or a comma-separated list. - A constraint to apply to the caught exception. - + - Executes the code of the delegate and captures any exception. - If a non-null base constraint was provided, it applies that - constraint to the exception. + Construct one or more TestMethods from a given MethodInfo, + using available parameter data. - A delegate representing the code to be tested - True if an exception is thrown and the constraint succeeds, otherwise false + The IMethod for which tests are to be constructed. + The suite to which the tests will be added. + One or more TestMethods - + - Converts an ActualValueDelegate to a TestDelegate - before calling the primary overload. + Returns a set of ITestCaseDataItems for use as arguments + to a parameterized test method. + The method for which data is needed. + - + - Write the constraint description to a MessageWriter + TestFixtureAttribute is used to mark a class that represents a TestFixture. - The writer on which the description is displayed - + - Write the actual value for a failing constraint test to a - MessageWriter. The default implementation simply writes - the raw value of actual, leaving it to the writer to - perform any formatting. + Default constructor - The writer on which the actual value is displayed - + - Returns the string representation of this constraint + Construct with a object[] representing a set of arguments. + In .NET 2.0, the arguments may later be separated into + type arguments and constructor arguments. + - + - Get the actual exception thrown - used by Assert.Throws. + Gets or sets the name of the test. + The name of the test. - + - ThrowsNothingConstraint tests that a delegate does not - throw an exception. + Gets or sets the RunState of this test fixture. - + - Test whether the constraint is satisfied by a given value + The arguments originally provided to the attribute - The value to be tested - True if no exception is thrown, otherwise false - + - Test whether the constraint is satisfied by a given delegate + Properties pertaining to this fixture - Delegate returning the value to be tested - True if no exception is thrown, otherwise false - + - Write the constraint description to a MessageWriter + Get or set the type arguments. If not set + explicitly, any leading arguments that are + Types are taken as type arguments. - The writer on which the description is displayed - + - Write the actual value for a failing constraint test to a - MessageWriter. Overridden in ThrowsNothingConstraint to write - information about the exception that was actually caught. + Descriptive text for this fixture - The writer on which the actual value is displayed - + - The Tolerance class generalizes the notion of a tolerance - within which an equality test succeeds. Normally, it is - used with numeric types, but it can be used with any - type that supports taking a difference between two - objects and comparing that difference to a value. + The author of this fixture - + - Constructs a linear tolerance of a specdified amount + The type that this fixture is testing - + - Constructs a tolerance given an amount and ToleranceMode + Gets or sets the ignore reason. May set RunState as a side effect. + The ignore reason. - + - Tests that the current Tolerance is linear with a - numeric value, throwing an exception if it is not. + Gets or sets the reason for not running the fixture. + The reason. - + - Returns an empty Tolerance object, equivalent to - specifying no tolerance. In most cases, it results - in an exact match but for floats and doubles a - default tolerance may be used. + Gets or sets the ignore reason. When set to a non-null + non-empty value, the test is marked as ignored. + The ignore reason. - + - Returns a zero Tolerance object, equivalent to - specifying an exact match. + Gets or sets a value indicating whether this is explicit. + + true if explicit; otherwise, false. + - + - Gets the ToleranceMode for the current Tolerance + Gets and sets the category for this fixture. + May be a comma-separated list of categories. - + - Gets the value of the current Tolerance instance. + Build a fixture from type provided. Normally called for a Type + on which the attribute has been placed. + The type info of the fixture to be used. + A an IEnumerable holding one TestFixture object. - + - Returns a new tolerance, using the current amount as a percentage. + Attribute used to identify a method that is + called before any tests in a fixture are run. - + - Returns a new tolerance, using the current amount in Ulps. + Attribute used to identify a method that is called after + all the tests in a fixture have run. The method is + guaranteed to be called, even if an exception is thrown. - + - Returns a new tolerance with a TimeSpan as the amount, using - the current amount as a number of days. + Adding this attribute to a method within a + class makes the method callable from the NUnit test runner. There is a property + called Description which is optional which you can provide a more detailed test + description. This class cannot be inherited. + + + [TestFixture] + public class Fixture + { + [Test] + public void MethodToTest() + {} + + [Test(Description = "more detailed description")] + public void TestDescriptionMethod() + {} + } + + - + - Returns a new tolerance with a TimeSpan as the amount, using - the current amount as a number of hours. + Construct the attribute, specifying a combining strategy and source of parameter data. - + - Returns a new tolerance with a TimeSpan as the amount, using - the current amount as a number of minutes. + Used on a method, marks the test with a timeout value in milliseconds. + The test will be run in a separate thread and is cancelled if the timeout + is exceeded. Used on a class or assembly, sets the default timeout + for all contained test methods. - + - Returns a new tolerance with a TimeSpan as the amount, using - the current amount as a number of seconds. + Construct a TimeoutAttribute given a time in milliseconds + The timeout value in milliseconds - + - Returns a new tolerance with a TimeSpan as the amount, using - the current amount as a number of milliseconds. + ValuesAttribute is used to provide literal arguments for + an individual parameter of a test. - + - Returns a new tolerance with a TimeSpan as the amount, using - the current amount as a number of clock ticks. + The collection of data to be returned. Must + be set by any derived attribute classes. + We use an object[] so that the individual + elements may have their type changed in GetData + if necessary - + - Returns true if the current tolerance is empty. + Constructs for use with an Enum parameter. Will pass every enum + value in to the test. - + - Modes in which the tolerance value for a comparison can be interpreted. + Construct with one argument + - + - The tolerance was created with a value, without specifying - how the value would be used. This is used to prevent setting - the mode more than once and is generally changed to Linear - upon execution of the test. + Construct with two arguments + + - + - The tolerance is used as a numeric range within which - two compared values are considered to be equal. + Construct with three arguments + + + - + - Interprets the tolerance as the percentage by which - the two compared values my deviate from each other. + Construct with an array of arguments + - + - Compares two values based in their distance in - representable numbers. + Get the collection of _values to be used as arguments - + - TrueConstraint tests that the actual value is true + ValueSourceAttribute indicates the source to be used to + provide data for one parameter of a test method. - + - Initializes a new instance of the class. + Construct with the name of the factory - for use with languages + that don't support params arrays. + The name of a static method, property or field that will provide data. - + - UniqueItemsConstraint tests whether all the items in a - collection are unique. + Construct with a Type and name - for use with languages + that don't support params arrays. + The Type that will provide data + The name of a static method, property or field that will provide data. - + - Check that all items are unique. + The name of a the method, property or fiend to be used as a source - - - + - Write a description of this constraint to a MessageWriter + A Type to be used as a source - - + - XmlSerializableConstraint tests whether - an object is serializable in XML format. + Gets an enumeration of data items for use as arguments + for a test method parameter. + The parameter for which data is needed + + An enumeration containing individual data items + - + - Test whether the constraint is satisfied by a given value + A set of Assert methods operating on one or more collections - The value to be tested - True for success, false for failure - + - Write the constraint description to a MessageWriter + The Equals method throws an InvalidOperationException. This is done + to make sure there is no mistake by calling this function. - The writer on which the description is displayed + + - + - Write the actual value for a failing constraint test to a - MessageWriter. The default implementation simply writes - the raw value of actual, leaving it to the writer to - perform any formatting. + override the default ReferenceEquals to throw an InvalidOperationException. This + implementation makes sure there is no mistake in calling this function + as part of Assert. - The writer on which the actual value is displayed + + - + - Returns the string representation of this constraint + Asserts that all items contained in collection are of the type specified by expectedType. + IEnumerable containing objects to be considered + System.Type that all objects in collection must be instances of - + - Helper class with properties and methods that supply - a number of constraints used in Asserts. + Asserts that all items contained in collection are of the type specified by expectedType. + IEnumerable containing objects to be considered + System.Type that all objects in collection must be instances of + The message that will be displayed on failure + Arguments to be used in formatting the message - + - Returns a new CollectionContainsConstraint checking for the - presence of a particular object in the collection. + Asserts that all items contained in collection are not equal to null. + IEnumerable containing objects to be considered - + - Returns a constraint that succeeds if the actual - value contains the substring supplied as an argument. + Asserts that all items contained in collection are not equal to null. + IEnumerable of objects to be considered + The message that will be displayed on failure + Arguments to be used in formatting the message - + - Summary description for DirectoryAssert + Ensures that every object contained in collection exists within the collection + once and only once. + IEnumerable of objects to be considered - + - The Equals method throws an AssertionException. This is done - to make sure there is no mistake by calling this function. + Ensures that every object contained in collection exists within the collection + once and only once. - - + IEnumerable of objects to be considered + The message that will be displayed on failure + Arguments to be used in formatting the message - + - override the default ReferenceEquals to throw an AssertionException. This - implementation makes sure there is no mistake in calling this function - as part of Assert. + Asserts that expected and actual are exactly equal. The collections must have the same count, + and contain the exact same objects in the same order. - - + The first IEnumerable of objects to be considered + The second IEnumerable of objects to be considered - + - We don't actually want any instances of this object, but some people - like to inherit from it to add other static methods. Hence, the - protected constructor disallows any instances of this object. + Asserts that expected and actual are exactly equal. The collections must have the same count, + and contain the exact same objects in the same order. + If comparer is not null then it will be used to compare the objects. + The first IEnumerable of objects to be considered + The second IEnumerable of objects to be considered + The IComparer to use in comparing objects from each IEnumerable - + - Verifies that two directories are equal. Two directories are considered - equal if both are null, or if both have the same value byte for byte. - If they are not equal an is thrown. + Asserts that expected and actual are exactly equal. The collections must have the same count, + and contain the exact same objects in the same order. - A directory containing the value that is expected - A directory containing the actual value - The message to display if directories are not equal + The first IEnumerable of objects to be considered + The second IEnumerable of objects to be considered + The message that will be displayed on failure Arguments to be used in formatting the message - + - Verifies that two directories are equal. Two directories are considered - equal if both are null, or if both have the same value byte for byte. - If they are not equal an is thrown. + Asserts that expected and actual are exactly equal. The collections must have the same count, + and contain the exact same objects in the same order. + If comparer is not null then it will be used to compare the objects. - A directory containing the value that is expected - A directory containing the actual value - The message to display if directories are not equal + The first IEnumerable of objects to be considered + The second IEnumerable of objects to be considered + The IComparer to use in comparing objects from each IEnumerable + The message that will be displayed on failure + Arguments to be used in formatting the message - + - Verifies that two directories are equal. Two directories are considered - equal if both are null, or if both have the same value byte for byte. - If they are not equal an is thrown. + Asserts that expected and actual are equivalent, containing the same objects but the match may be in any order. - A directory containing the value that is expected - A directory containing the actual value + The first IEnumerable of objects to be considered + The second IEnumerable of objects to be considered - + - Verifies that two directories are equal. Two directories are considered - equal if both are null, or if both have the same value byte for byte. - If they are not equal an is thrown. + Asserts that expected and actual are equivalent, containing the same objects but the match may be in any order. - A directory path string containing the value that is expected - A directory path string containing the actual value - The message to display if directories are not equal + The first IEnumerable of objects to be considered + The second IEnumerable of objects to be considered + The message that will be displayed on failure Arguments to be used in formatting the message - + - Verifies that two directories are equal. Two directories are considered - equal if both are null, or if both have the same value byte for byte. - If they are not equal an is thrown. + Asserts that expected and actual are not exactly equal. - A directory path string containing the value that is expected - A directory path string containing the actual value - The message to display if directories are not equal + The first IEnumerable of objects to be considered + The second IEnumerable of objects to be considered - + - Verifies that two directories are equal. Two directories are considered - equal if both are null, or if both have the same value byte for byte. - If they are not equal an is thrown. + Asserts that expected and actual are not exactly equal. + If comparer is not null then it will be used to compare the objects. - A directory path string containing the value that is expected - A directory path string containing the actual value + The first IEnumerable of objects to be considered + The second IEnumerable of objects to be considered + The IComparer to use in comparing objects from each IEnumerable - + - Asserts that two directories are not equal. If they are equal - an is thrown. + Asserts that expected and actual are not exactly equal. - A directory containing the value that is expected - A directory containing the actual value - The message to display if directories are not equal + The first IEnumerable of objects to be considered + The second IEnumerable of objects to be considered + The message that will be displayed on failure Arguments to be used in formatting the message - + - Asserts that two directories are not equal. If they are equal - an is thrown. + Asserts that expected and actual are not exactly equal. + If comparer is not null then it will be used to compare the objects. - A directory containing the value that is expected - A directory containing the actual value - The message to display if directories are not equal + The first IEnumerable of objects to be considered + The second IEnumerable of objects to be considered + The IComparer to use in comparing objects from each IEnumerable + The message that will be displayed on failure + Arguments to be used in formatting the message - + - Asserts that two directories are not equal. If they are equal - an is thrown. + Asserts that expected and actual are not equivalent. - A directory containing the value that is expected - A directory containing the actual value + The first IEnumerable of objects to be considered + The second IEnumerable of objects to be considered - + - Asserts that two directories are not equal. If they are equal - an is thrown. + Asserts that expected and actual are not equivalent. - A directory path string containing the value that is expected - A directory path string containing the actual value - The message to display if directories are equal + The first IEnumerable of objects to be considered + The second IEnumerable of objects to be considered + The message that will be displayed on failure Arguments to be used in formatting the message - + - Asserts that two directories are not equal. If they are equal - an is thrown. + Asserts that collection contains actual as an item. - A directory path string containing the value that is expected - A directory path string containing the actual value - The message to display if directories are equal + IEnumerable of objects to be considered + Object to be found within collection - + - Asserts that two directories are not equal. If they are equal - an is thrown. + Asserts that collection contains actual as an item. - A directory path string containing the value that is expected - A directory path string containing the actual value + IEnumerable of objects to be considered + Object to be found within collection + The message that will be displayed on failure + Arguments to be used in formatting the message - + - Asserts that the directory is empty. If it is not empty - an is thrown. + Asserts that collection does not contain actual as an item. - A directory to search - The message to display if directories are not equal - Arguments to be used in formatting the message + IEnumerable of objects to be considered + Object that cannot exist within collection - + - Asserts that the directory is empty. If it is not empty - an is thrown. + Asserts that collection does not contain actual as an item. - A directory to search - The message to display if directories are not equal + IEnumerable of objects to be considered + Object that cannot exist within collection + The message that will be displayed on failure + Arguments to be used in formatting the message - + - Asserts that the directory is empty. If it is not empty - an is thrown. + Asserts that the superset does not contain the subset - A directory to search + The IEnumerable subset to be considered + The IEnumerable superset to be considered - + - Asserts that the directory is empty. If it is not empty - an is thrown. + Asserts that the superset does not contain the subset - A directory to search - The message to display if directories are not equal + The IEnumerable subset to be considered + The IEnumerable superset to be considered + The message that will be displayed on failure Arguments to be used in formatting the message - + - Asserts that the directory is empty. If it is not empty - an is thrown. + Asserts that the superset contains the subset. - A directory to search - The message to display if directories are not equal + The IEnumerable subset to be considered + The IEnumerable superset to be considered - + - Asserts that the directory is empty. If it is not empty - an is thrown. + Asserts that the superset contains the subset. - A directory to search + The IEnumerable subset to be considered + The IEnumerable superset to be considered + The message that will be displayed on failure + Arguments to be used in formatting the message - + - Asserts that the directory is not empty. If it is empty - an is thrown. + Asserts that the subset does not contain the superset - A directory to search - The message to display if directories are not equal - Arguments to be used in formatting the message + The IEnumerable superset to be considered + The IEnumerable subset to be considered - + - Asserts that the directory is not empty. If it is empty - an is thrown. + Asserts that the subset does not contain the superset - A directory to search - The message to display if directories are not equal + The IEnumerable superset to be considered + The IEnumerable subset to be considered + The message that will be displayed on failure + Arguments to be used in formatting the message - + - Asserts that the directory is not empty. If it is empty - an is thrown. + Asserts that the subset contains the superset. - A directory to search + The IEnumerable superset to be considered + The IEnumerable subset to be considered - + - Asserts that the directory is not empty. If it is empty - an is thrown. + Asserts that the subset contains the superset. - A directory to search - The message to display if directories are not equal + The IEnumerable superset to be considered + The IEnumerable subset to be considered + The message that will be displayed on failure Arguments to be used in formatting the message - + - Asserts that the directory is not empty. If it is empty - an is thrown. + Assert that an array, list or other collection is empty - A directory to search - The message to display if directories are not equal + An array, list or other collection implementing IEnumerable + The message to be displayed on failure + Arguments to be used in formatting the message - + - Asserts that the directory is not empty. If it is empty - an is thrown. + Assert that an array,list or other collection is empty - A directory to search + An array, list or other collection implementing IEnumerable - + - Asserts that path contains actual as a subdirectory or - an is thrown. + Assert that an array, list or other collection is empty - A directory to search - sub-directory asserted to exist under directory - The message to display if directory is not within the path + An array, list or other collection implementing IEnumerable + The message to be displayed on failure Arguments to be used in formatting the message - - - Asserts that path contains actual as a subdirectory or - an is thrown. - - A directory to search - sub-directory asserted to exist under directory - The message to display if directory is not within the path - - + - Asserts that path contains actual as a subdirectory or - an is thrown. + Assert that an array,list or other collection is empty - A directory to search - sub-directory asserted to exist under directory + An array, list or other collection implementing IEnumerable - + - Asserts that path contains actual as a subdirectory or - an is thrown. + Assert that an array, list or other collection is ordered - A directory to search - sub-directory asserted to exist under directory - The message to display if directory is not within the path + An array, list or other collection implementing IEnumerable + The message to be displayed on failure Arguments to be used in formatting the message - + - Asserts that path contains actual as a subdirectory or - an is thrown. + Assert that an array, list or other collection is ordered - A directory to search - sub-directory asserted to exist under directory - The message to display if directory is not within the path + An array, list or other collection implementing IEnumerable - + - Asserts that path contains actual as a subdirectory or - an is thrown. + Assert that an array, list or other collection is ordered - A directory to search - sub-directory asserted to exist under directory + An array, list or other collection implementing IEnumerable + A custom comparer to perform the comparisons + The message to be displayed on failure + Arguments to be used in formatting the message - + - Asserts that path does not contain actual as a subdirectory or - an is thrown. + Assert that an array, list or other collection is ordered - A directory to search - sub-directory asserted to exist under directory - The message to display if directory is not within the path - Arguments to be used in formatting the message + An array, list or other collection implementing IEnumerable + A custom comparer to perform the comparisons - + - Asserts that path does not contain actual as a subdirectory or - an is thrown. + Helper class with properties and methods that supply + a number of constraints used in Asserts. - A directory to search - sub-directory asserted to exist under directory - The message to display if directory is not within the path - + - Asserts that path does not contain actual as a subdirectory or - an is thrown. + Returns a new CollectionContainsConstraint checking for the + presence of a particular object in the collection. - A directory to search - sub-directory asserted to exist under directory - + - Asserts that path does not contain actual as a subdirectory or - an is thrown. + Returns a new DictionaryContainsKeyConstraint checking for the + presence of a particular key in the dictionary. - A directory to search - sub-directory asserted to exist under directory - The message to display if directory is not within the path - Arguments to be used in formatting the message - + - Asserts that path does not contain actual as a subdirectory or - an is thrown. + Returns a new DictionaryContainsValueConstraint checking for the + presence of a particular value in the dictionary. - A directory to search - sub-directory asserted to exist under directory - The message to display if directory is not within the path - + - Asserts that path does not contain actual as a subdirectory or - an is thrown. + Returns a constraint that succeeds if the actual + value contains the substring supplied as an argument. - A directory to search - sub-directory asserted to exist under directory @@ -9228,6 +15954,11 @@ Serialization Constructor + + + Gets the ResultState provided by this exception + + Thrown when an assertion failed. @@ -9247,6 +15978,11 @@ Serialization Constructor + + + Gets the ResultState provided by this exception + + Thrown when a test executes inconclusively. @@ -9267,6 +16003,11 @@ Serialization Constructor + + + Gets the ResultState provided by this exception + + Thrown when an assertion failed. @@ -9286,14 +16027,19 @@ Serialization Constructor + + + Gets the ResultState provided by this exception + + - Summary description for FileAssert. + Asserts on Files - The Equals method throws an AssertionException. This is done + The Equals method throws an InvalidOperationException. This is done to make sure there is no mistake by calling this function. @@ -9301,20 +16047,13 @@ - override the default ReferenceEquals to throw an AssertionException. This + override the default ReferenceEquals to throw an InvalidOperationException. This implementation makes sure there is no mistake in calling this function as part of Assert. - - - We don't actually want any instances of this object, but some people - like to inherit from it to add other static methods. Hence, the - protected constructor disallows any instances of this object. - - Verifies that two Streams are equal. Two Streams are considered @@ -9326,16 +16065,6 @@ The message to display if Streams are not equal Arguments to be used in formatting the message - - - Verifies that two Streams are equal. Two Streams are considered - equal if both are null, or if both have the same value byte for byte. - If they are not equal an is thrown. - - The expected Stream - The actual Stream - The message to display if objects are not equal - Verifies that two Streams are equal. Two Streams are considered @@ -9356,16 +16085,6 @@ The message to display if Streams are not equal Arguments to be used in formatting the message - - - Verifies that two files are equal. Two files are considered - equal if both are null, or if both have the same value byte for byte. - If they are not equal an is thrown. - - A file containing the value that is expected - A file containing the actual value - The message to display if objects are not equal - Verifies that two files are equal. Two files are considered @@ -9386,16 +16105,6 @@ The message to display if Streams are not equal Arguments to be used in formatting the message - - - Verifies that two files are equal. Two files are considered - equal if both are null, or if both have the same value byte for byte. - If they are not equal an is thrown. - - The path to a file containing the value that is expected - The path to a file containing the actual value - The message to display if objects are not equal - Verifies that two files are equal. Two files are considered @@ -9415,15 +16124,6 @@ The message to be displayed when the two Stream are the same. Arguments to be used in formatting the message - - - Asserts that two Streams are not equal. If they are equal - an is thrown. - - The expected Stream - The actual Stream - The message to be displayed when the Streams are the same. - Asserts that two Streams are not equal. If they are equal @@ -9442,15 +16142,6 @@ The message to display if Streams are not equal Arguments to be used in formatting the message - - - Asserts that two files are not equal. If they are equal - an is thrown. - - A file containing the value that is expected - A file containing the actual value - The message to display if objects are not equal - Asserts that two files are not equal. If they are equal @@ -9469,15 +16160,6 @@ The message to display if Streams are not equal Arguments to be used in formatting the message - - - Asserts that two files are not equal. If they are equal - an is thrown. - - The path to a file containing the value that is expected - The path to a file containing the actual value - The message to display if objects are not equal - Asserts that two files are not equal. If they are equal @@ -9486,73 +16168,87 @@ The path to a file containing the value that is expected The path to a file containing the actual value - + - GlobalSettings is a place for setting default values used - by the framework in performing asserts. + Asserts that the file exists. If it does not exist + an is thrown. + A file containing the actual value + The message to display if Streams are not equal + Arguments to be used in formatting the message - + - Default tolerance for floating point equality + Asserts that the file exists. If it does not exist + an is thrown. + A file containing the actual value - + - Class used to guard against unexpected argument values - by throwing an appropriate exception. + Asserts that the file exists. If it does not exist + an is thrown. + The path to a file containing the actual value + The message to display if Streams are not equal + Arguments to be used in formatting the message - + - Throws an exception if an argument is null + Asserts that the file exists. If it does not exist + an is thrown. - The value to be tested - The name of the argument + The path to a file containing the actual value - + - Throws an exception if a string argument is null or empty + Asserts that the file does not exist. If it does exist + an is thrown. - The value to be tested - The name of the argument + A file containing the actual value + The message to display if Streams are not equal + Arguments to be used in formatting the message - + - Helper class with properties and methods that supply - a number of constraints used in Asserts. + Asserts that the file does not exist. If it does exist + an is thrown. + A file containing the actual value - + - Returns a ConstraintExpression, which will apply - the following constraint to all members of a collection, - succeeding only if a specified number of them succeed. + Asserts that the file does not exist. If it does exist + an is thrown. + The path to a file containing the actual value + The message to display if Streams are not equal + Arguments to be used in formatting the message - + - Returns a new PropertyConstraintExpression, which will either - test for the existence of the named property on the object - being tested or apply any following constraint to that property. + Asserts that the file does not exist. If it does exist + an is thrown. + The path to a file containing the actual value - + - Returns a new AttributeConstraint checking for the - presence of a particular attribute on an object. + GlobalSettings is a place for setting default values used + by the framework in performing asserts. Anything set through + this class applies to the entire test run. It should not normally + be used from within a test, since it is not thread-safe. - + - Returns a new AttributeConstraint checking for the - presence of a particular attribute on an object. + Default tolerance for floating point equality - + - Returns a new CollectionContainsConstraint checking for the - presence of a particular object in the collection. + Helper class with properties and methods that supply + a number of constraints used in Asserts. @@ -9582,6 +16278,20 @@ succeeding if all of them fail. + + + Returns a ConstraintExpression, which will apply + the following constraint to all members of a collection, + succeeding only if a specified number of them succeed. + + + + + Returns a new PropertyConstraintExpression, which will either + test for the existence of the named property on the object + being tested or apply any following constraint to that property. + + Returns a new ConstraintExpression, which will apply the following @@ -9606,79 +16316,97 @@ constraint to the InnerException property of the object being tested. - + - + Returns a new AttributeConstraint checking for the + presence of a particular attribute on an object. + + + + + Returns a new AttributeConstraint checking for the + presence of a particular attribute on an object. - - + - Compares two objects of a given Type for equality within a tolerance + Returns a new CollectionContainsConstraint checking for the + presence of a particular object in the collection. - The first object to compare - The second object to compare - The tolerance to use in the comparison - - + - Interface implemented by a user fixture in order to - validate any expected exceptions. It is only called - for test methods marked with the ExpectedException - attribute. + Helper class with properties and methods that supply + a number of constraints used in Asserts. - + - Method to handle an expected exception + Returns a ConstraintExpression that negates any + following constraint. - The exception to be handled - + - Provides details about a test + Returns a ConstraintExpression, which will apply + the following constraint to all members of a collection, + succeeding if all of them succeed. - + - Creates an instance of TestDetails + Returns a constraint that tests for null - The fixture that the test is a member of, if available. - The method that implements the test, if available. - The full name of the test. - A string representing the type of test, e.g. "Test Case". - Indicates if the test represents a suite of tests. - + - The fixture that the test is a member of, if available. + Returns a constraint that tests for True - + - The method that implements the test, if available. + Returns a constraint that tests for False - + - The full name of the test. + Returns a constraint that tests for a positive value - + - A string representing the type of test, e.g. "Test Case". + Returns a constraint that tests for a negative value - + - Indicates if the test represents a suite of tests. + Returns a constraint that tests for equality with zero - + - Helper class with properties and methods that supply - a number of constraints used in Asserts. + Returns a constraint that tests for NaN + + + + + Returns a constraint that tests for empty + + + + + Returns a constraint that tests whether a collection + contains all unique items. + + + + + Returns a constraint that tests whether an object graph is serializable in binary format. + + + + + Returns a constraint that tests whether an object graph is serializable in xml format. @@ -9694,37 +16422,37 @@ Returns a constraint that tests whether the - actual value is greater than the suppled argument + actual value is greater than the supplied argument Returns a constraint that tests whether the - actual value is greater than or equal to the suppled argument + actual value is greater than or equal to the supplied argument Returns a constraint that tests whether the - actual value is greater than or equal to the suppled argument + actual value is greater than or equal to the supplied argument Returns a constraint that tests whether the - actual value is less than the suppled argument + actual value is less than the supplied argument Returns a constraint that tests whether the - actual value is less than or equal to the suppled argument + actual value is less than or equal to the supplied argument Returns a constraint that tests whether the - actual value is less than or equal to the suppled argument + actual value is less than or equal to the supplied argument @@ -9751,18 +16479,6 @@ is of the type supplied as an argument or a derived type. - - - Returns a constraint that tests whether the actual value - is of the type supplied as an argument or a derived type. - - - - - Returns a constraint that tests whether the actual value - is of the type supplied as an argument or a derived type. - - Returns a constraint that tests whether the actual value @@ -9778,13 +16494,13 @@ Returns a constraint that tests whether the actual value - is assignable from the type supplied as an argument. + is assignable to the type supplied as an argument. Returns a constraint that tests whether the actual value - is assignable from the type supplied as an argument. + is assignable to the type supplied as an argument. @@ -9800,6 +16516,17 @@ is a subset of the collection supplied as an argument. + + + Returns a constraint that tests whether the actual value + is a superset of the collection supplied as an argument. + + + + + Returns a constraint that tests whether a collection is ordered + + Returns a constraint that succeeds if the actual @@ -9830,10 +16557,10 @@ is the same as an expected path after canonicalization. - + Returns a constraint that tests whether the path provided - is under an expected path after canonicalization. + is a subpath of the expected path after canonicalization. @@ -9842,80 +16569,15 @@ is the same path or under an expected path after canonicalization. - - - Returns a constraint that tests whether the actual value falls - within a specified range. - - - - - Returns a ConstraintExpression that negates any - following constraint. - - - - - Returns a ConstraintExpression, which will apply - the following constraint to all members of a collection, - succeeding if all of them succeed. - - - - - Returns a constraint that tests for null - - - - - Returns a constraint that tests for True - - - - - Returns a constraint that tests for False - - - - - Returns a constraint that tests for a positive value - - - - - Returns a constraint that tests for a negative value - - - - - Returns a constraint that tests for NaN - - - - - Returns a constraint that tests for empty - - - - - Returns a constraint that tests whether a collection - contains all unique items. - - - - - Returns a constraint that tests whether an object graph is serializable in binary format. - - - - - Returns a constraint that tests whether an object graph is serializable in xml format. - - - + - Returns a constraint that tests whether a collection is ordered + Returns a constraint that tests whether the actual value falls + inclusively within a specified range. + from must be less than or equal to true + Inclusive beginning of the range. Must be less than or equal to to. + Inclusive end of the range. Must be greater than or equal to from. + @@ -9931,84 +16593,30 @@ - List.Map returns a ListMapper, which can be used to map - the original collection to another collection. - - - - - - - ListMapper is used to transform a collection used as an actual argument - producing another collection to be used in the assertion. - - - - - Construct a ListMapper based on a collection - - The collection to be transformed - - - - Produces a collection containing all the values of a property - - The collection of property values - - - - - Randomizer returns a set of random values in a repeatable - way, to allow re-running of tests if necessary. - - - - - Get a randomizer for a particular member, returning - one that has already been created if it exists. - This ensures that the same values are generated - each time the tests are reloaded. - - - - - Get a randomizer for a particular parameter, returning - one that has already been created if it exists. - This ensures that the same values are generated - each time the tests are reloaded. - - - - - Construct a randomizer using a random seed - - - - - Construct a randomizer using a specified seed - - - - - Return an array of random doubles between 0.0 and 1.0. + List.Map returns a ListMapper, which can be used to map + the original collection to another collection. - + - + - Return an array of random doubles with values in a specified range. + ListMapper is used to transform a collection used as an actual argument + producing another collection to be used in the assertion. - + - Return an array of random ints with values in a specified range. + Construct a ListMapper based on a collection + The collection to be transformed - + - Get a random seed for use in creating a randomizer. + Produces a collection containing all the _values of a property + The collection of property _values + @@ -10019,7 +16627,7 @@ Null represents a null value, which cannot be used as an - argument to an attribute under .NET 1.x + argument to an attriute under .NET 1.x @@ -10029,7 +16637,7 @@ - The Equals method throws an AssertionException. This is done + The Equals method throws an InvalidOperationException. This is done to make sure there is no mistake by calling this function. @@ -10037,7 +16645,7 @@ - override the default ReferenceEquals to throw an AssertionException. This + override the default ReferenceEquals to throw an InvalidOperationException. This implementation makes sure there is no mistake in calling this function as part of Assert. @@ -10053,14 +16661,6 @@ The message to display in case of failure Arguments used in formatting the message - - - Asserts that a string is found within another string. - - The expected string - The string to be examined - The message to display in case of failure - Asserts that a string is found within another string. @@ -10077,14 +16677,6 @@ The message to display in case of failure Arguments used in formatting the message - - - Asserts that a string is found within another string. - - The expected string - The string to be examined - The message to display in case of failure - Asserts that a string is found within another string. @@ -10101,14 +16693,6 @@ The message to display in case of failure Arguments used in formatting the message - - - Asserts that a string starts with another string. - - The expected string - The string to be examined - The message to display in case of failure - Asserts that a string starts with another string. @@ -10125,14 +16709,6 @@ The message to display in case of failure Arguments used in formatting the message - - - Asserts that a string does not start with another string. - - The expected string - The string to be examined - The message to display in case of failure - Asserts that a string does not start with another string. @@ -10149,14 +16725,6 @@ The message to display in case of failure Arguments used in formatting the message - - - Asserts that a string ends with another string. - - The expected string - The string to be examined - The message to display in case of failure - Asserts that a string ends with another string. @@ -10173,14 +16741,6 @@ The message to display in case of failure Arguments used in formatting the message - - - Asserts that a string does not end with another string. - - The expected string - The string to be examined - The message to display in case of failure - Asserts that a string does not end with another string. @@ -10197,14 +16757,6 @@ The message to display in case of failure Arguments used in formatting the message - - - Asserts that two strings are equal, without regard to case. - - The expected string - The actual string - The message to display in case of failure - Asserts that two strings are equal, without regard to case. @@ -10221,14 +16773,6 @@ The message to display in case of failure Arguments used in formatting the message - - - Asserts that two strings are Notequal, without regard to case. - - The expected string - The actual string - The message to display in case of failure - Asserts that two strings are not equal, without regard to case. @@ -10245,14 +16789,6 @@ The message to display in case of failure Arguments used in formatting the message - - - Asserts that a string matches an expected regular expression pattern. - - The regex pattern to be matched - The actual string - The message to display in case of failure - Asserts that a string matches an expected regular expression pattern. @@ -10269,14 +16805,6 @@ The message to display in case of failure Arguments used in formatting the message - - - Asserts that a string does not match an expected regular expression pattern. - - The regex pattern to be used - The actual string - The message to display in case of failure - Asserts that a string does not match an expected regular expression pattern. @@ -10288,697 +16816,1093 @@ The TestCaseData class represents a set of arguments and other parameter info to be used for a parameterized - test case. It provides a number of instance modifiers - for use in initializing the test case. - - Note: Instance modifiers are getters that return - the same instance after modifying it's state. + test case. It is derived from TestCaseParameters and adds a + fluent syntax for use in initializing the test case. - + - The argument list to be provided to the test + Initializes a new instance of the class. + The arguments. - + - The expected result to be returned + Initializes a new instance of the class. + The argument. - + - Set to true if this has an expected result + Initializes a new instance of the class. + The first argument. + The second argument. - + - The expected exception Type + Initializes a new instance of the class. + The first argument. + The second argument. + The third argument. - + - The FullName of the expected exception + Sets the expected result for the test + The expected result + A modified TestCaseData - + - The name to be used for the test + Sets the name of the test case + The modified TestCaseData instance - + - The description of the test + Sets the description for the test case + being constructed. + The description. + The modified TestCaseData instance. - + - A dictionary of properties, used to add information - to tests without requiring the class to change. + Applies a category to the test + + - + - If true, indicates that the test case is to be ignored + Applies a named property to the test + + + - + - If true, indicates that the test case is marked explicit + Applies a named property to the test + + + - + - The reason for ignoring a test case + Applies a named property to the test + + + - + - Initializes a new instance of the class. + Marks the test case as explicit. - The arguments. - + - Initializes a new instance of the class. + Marks the test case as explicit, specifying the reason. - The argument. - + - Initializes a new instance of the class. + Ignores this TestCase, specifying the reason. - The first argument. - The second argument. + The reason. + - + - Initializes a new instance of the class. + Provide the context information of the current test. + This is an adapter for the internal ExecutionContext + class, hiding the internals from the user test. + + + + + Construct a TestContext for an ExecutionContext + + The ExecutionContext to adapt + + + + Get the current test context. This is created + as needed. The user may save the context for + use within a test, but it should not be used + outside the test for which it is created. + + + + + Gets a TextWriter that will send output to the current test result. + + + + + Gets a TextWriter that will send output directly to Console.Error + + + + + Gets a TextWriter for use in displaying immediate progress messages + + + + + TestParameters object holds parameters for the test run, if any are specified + + + + + Get a representation of the current test. + + + + + Gets a Representation of the TestResult for the current test. + + + + + Gets the unique name of the Worker that is executing this test. + + + + + Gets the directory containing the current test assembly. + + + + + Gets the directory to be used for outputting files created + by this test run. + + + + + Gets the random generator. + + + The random generator. + + + + Write the string representation of a boolean value to the current result + + + Write a char to the current result + + + Write a char array to the current result + + + Write the string representation of a double to the current result + + + Write the string representation of an Int32 value to the current result + + + Write the string representation of an Int64 value to the current result + + + Write the string representation of a decimal value to the current result + + + Write the string representation of an object to the current result + + + Write the string representation of a Single value to the current result + + + Write a string to the current result + + + Write the string representation of a UInt32 value to the current result + + + Write the string representation of a UInt64 value to the current result + + + Write a formatted string to the current result + + + Write a formatted string to the current result + + + Write a formatted string to the current result + + + Write a formatted string to the current result + + + Write a line terminator to the current result + + + Write the string representation of a boolean value to the current result followed by a line terminator + + + Write a char to the current result followed by a line terminator + + + Write a char array to the current result followed by a line terminator + + + Write the string representation of a double to the current result followed by a line terminator + + + Write the string representation of an Int32 value to the current result followed by a line terminator + + + Write the string representation of an Int64 value to the current result followed by a line terminator + + + Write the string representation of a decimal value to the current result followed by a line terminator + + + Write the string representation of an object to the current result followed by a line terminator + + + Write the string representation of a Single value to the current result followed by a line terminator + + + Write a string to the current result followed by a line terminator + + + Write the string representation of a UInt32 value to the current result followed by a line terminator + + + Write the string representation of a UInt64 value to the current result followed by a line terminator + + + Write a formatted string to the current result followed by a line terminator + + + Write a formatted string to the current result followed by a line terminator + + + Write a formatted string to the current result followed by a line terminator + + + Write a formatted string to the current result followed by a line terminator + + + + This method adds the a new ValueFormatterFactory to the + chain of responsibility used for fomatting values in messages. + The scope of the change is the current TestContext. + + The factory delegate + + + + This method provides a simplified way to add a ValueFormatter + delegate to the chain of responsibility, creating the factory + delegate internally. It is useful when the Type of the object + is the only criterion for selection of the formatter, since + it can be used without getting involved with a compould function. + + The type supported by this formatter + The ValueFormatter delegate + + + + TestAdapter adapts a Test for consumption by + the user test code. + + + + + Construct a TestAdapter for a Test + + The Test to be adapted + + + + Gets the unique Id of a test + + + + + The name of the test, which may or may not be + the same as the method name. + + + + + The name of the method representing the test. + + + + + The FullName of the test + + + + + The ClassName of the test - The first argument. - The second argument. - The third argument. - + - Sets the expected result for the test + The properties of the test. - The expected result - A modified TestCaseData - + - Sets the expected exception type for the test + ResultAdapter adapts a TestResult for consumption by + the user test code. - Type of the expected exception. - The modified TestCaseData instance - + - Sets the expected exception type for the test + Construct a ResultAdapter for a TestResult - FullName of the expected exception. - The modified TestCaseData instance + The TestResult to be adapted - + - Sets the name of the test case + Gets a ResultState representing the outcome of the test. - The modified TestCaseData instance - + - Sets the description for the test case - being constructed. + Gets the message associated with a test + failure or with not running the test - The description. - The modified TestCaseData instance. - + - Applies a category to the test + Gets any stacktrace associated with an + error or failure. - - - + - Applies a named property to the test + Gets the number of test cases that failed + when running the test and all its children. - - - - + - Applies a named property to the test + Gets the number of test cases that passed + when running the test and all its children. - - - - + - Applies a named property to the test + Gets the number of test cases that were skipped + when running the test and all its children. - - - - + - Ignores this TestCase. + Gets the number of test cases that were inconclusive + when running the test and all its children. - - + - Ignores this TestCase, specifying the reason. + TestParameters class holds any named parameters supplied to the test run - The reason. - - + - Marks this TestCase as Explicit + Gets the number of test parameters - - + - Marks this TestCase as Explicit, specifying the reason. + Gets a collection of the test parameter names - The reason. - - + - Gets the argument list to be provided to the test + Gets a flag indicating whether a parameter with the specified name exists.N + Name of the parameter + True if it exists, otherwise false - + - Gets the expected result + Indexer provides access to the internal dictionary + Name of the parameter + Value of the parameter or null if not present - + - Returns true if the result has been set + Get method is a simple alternative to the indexer + Name of the paramter + Value of the parameter or null if not present - + - Gets the expected exception Type + Get the value of a parameter or a default string + Name of the parameter + Default value of the parameter + Value of the parameter or default value if not present - + - Gets the FullName of the expected exception + Get the value of a parameter or return a default + The return Type + Name of the parameter + Default value of the parameter + Value of the parameter or default value if not present - + - Gets the name to be used for the test + Adds a parameter to the list + Name of the parameter + Value of the parameter - + - Gets the description of the test + Helper class with properties and methods that supply + constraints that operate on exceptions. - + - Gets a value indicating whether this is ignored. + Creates a constraint specifying an expected exception - true if ignored; otherwise, false. - + - Gets a value indicating whether this is explicit. + Creates a constraint specifying an exception with a given InnerException - true if explicit; otherwise, false. - + - Gets the ignore reason. + Creates a constraint specifying an expected TargetInvocationException - The ignore reason. - + - Gets a list of categories associated with this test. + Creates a constraint specifying an expected ArgumentException - + - Gets the property dictionary for this test + Creates a constraint specifying an expected ArgumentNUllException - + - Provide the context information of the current test + Creates a constraint specifying an expected InvalidOperationException - + - Constructs a TestContext using the provided context dictionary + Creates a constraint specifying that no exception is thrown - A context dictionary - + - Get the current test context. This is created - as needed. The user may save the context for - use within a test, but it should not be used - outside the test for which it is created. + Creates a constraint specifying the exact type of exception expected - + - Gets a TestAdapter representing the currently executing test in this context. + Creates a constraint specifying the exact type of exception expected - + - Gets a ResultAdapter representing the current result for the test - executing in this context. + Creates a constraint specifying the type of exception expected - + - Gets the directory containing the current test assembly. + Creates a constraint specifying the type of exception expected - + - Gets the directory to be used for outputing files created - by this test run. + FrameworkPackageSettings is a static class containing constant values that + are used as keys in setting up a TestPackage. These values are used in + the framework, and set in the runner. Setting values may be a string, int or bool. - + - TestAdapter adapts a Test for consumption by - the user test code. + Flag (bool) indicating whether tests are being debugged. - + - Constructs a TestAdapter for this context + Flag (bool) indicating whether to pause execution of tests to allow + the user to attache a debugger. - The context dictionary - + - The name of the test. + The InternalTraceLevel for this run. Values are: "Default", + "Off", "Error", "Warning", "Info", "Debug", "Verbose". + Default is "Off". "Debug" and "Verbose" are synonyms. - + - The FullName of the test + Full path of the directory to be used for work and result files. + This path is provided to tests by the frameowrk TestContext. - + - The properties of the test. + Integer value in milliseconds for the default timeout value + for test cases. If not specified, there is no timeout except + as specified by attributes on the tests themselves. - + - ResultAdapter adapts a TestResult for consumption by - the user test code. + A TextWriter to which the internal trace will be sent. - + - Construct a ResultAdapter for a context + A list of tests to be loaded. - The context holding the result - + - The TestState of current test. This maps to the ResultState - used in nunit.core and is subject to change in the future. + The number of test threads to run for the assembly. If set to + 1, a single queue is used. If set to 0, tests are executed + directly, without queuing. - + - The TestStatus of current test. This enum will be used - in future versions of NUnit and so is to be preferred - to the TestState value. + The random seed to be used for this assembly. If specified + as the value reported from a prior run, the framework should + generate identical random values for tests as were used for + that run, provided that no change has been made to the test + assembly. Default is a random value itself. - + - The ResultState enum indicates the result of running a test + If true, execution stops after the first error or failure. - + - The result is inconclusive + If true, use of the event queue is suppressed and test events are synchronous. - + - The test was not runnable. + The default naming pattern used in generating test names - + - The test has been skipped. + Parameters to be passed on to the test - + - The test has been ignored. + Provides a platform-independent methods for getting attributes + for use by AttributeConstraint and AttributeExistsConstraint. - + - The test succeeded + Gets the custom attributes from the given object. + Portable libraries do not have an ICustomAttributeProvider, so we need to cast to each of + it's direct subtypes and try to get attributes off those instead. + The actual. + Type of the attribute. + if set to true [inherit]. + A list of the given attribute on the given object. - + - The test failed + A MarshalByRefObject that lives forever - + - The test encountered an unexpected exception + Obtains a lifetime service object to control the lifetime policy for this instance. - + - The test was cancelled by the user + Provides NUnit specific extensions to aid in Reflection + across multiple frameworks + + This version of the class supplies GetTypeInfo() on platforms + that don't support it. + - + - The TestStatus enum indicates the result of running a test + GetTypeInfo gives access to most of the Type information we take for granted + on .NET Core and Windows Runtime. Rather than #ifdef different code for different + platforms, it is easiest to just code all platforms as if they worked this way, + thus the simple passthrough. + + - + - The test was inconclusive + Extensions for Assembly that are not available in pre-4.5 .NET releases - + - The test has skipped + An easy way to get a single custom attribute from an assembly + The attribute Type + The assembly + An attribute of Type T - + - The test succeeded + Type extensions that apply to all target frameworks - + - The test failed + Determines if the given array is castable/matches the array. + + + - + - Helper class with static methods used to supply constraints - that operate on strings. + Determines if one type can be implicitly converted from another + + + - + - Returns a constraint that succeeds if the actual - value contains the substring supplied as an argument. + This class is used as a flag when we get a parameter list for a method/constructor, but + we do not know one of the types because null was passed in. - + - Returns a constraint that fails if the actual - value contains the substring supplied as an argument. + Env is a static class that provides some of the features of + System.Environment that are not available under all runtimes - + - Returns a constraint that succeeds if the actual - value starts with the substring supplied as an argument. + The newline sequence in the current environment. - + - Returns a constraint that fails if the actual - value starts with the substring supplied as an argument. + Path to the 'My Documents' folder - + - Returns a constraint that succeeds if the actual - value ends with the substring supplied as an argument. + Directory used for file output if not specified on commandline. - + - Returns a constraint that fails if the actual - value ends with the substring supplied as an argument. + Represents a thread-safe first-in, first-out collection of objects. + Specifies the type of elements in the queue. + + All public and protected members of are thread-safe and may be used + concurrently from multiple threads. + - + - Returns a constraint that succeeds if the actual - value matches the Regex pattern supplied as an argument. + Initializes a new instance of the class. - + - Returns a constraint that fails if the actual - value matches the pattern supplied as an argument. + Initializes a new instance of the + class that contains elements copied from the specified collection + The collection whose elements are copied to the new . + The argument is + null. - + - Returns a ConstraintExpression, which will apply - the following constraint to all members of a collection, - succeeding if all of them succeed. + Adds an object to the end of the . + The object to add to the end of the . The value can be a null reference + (Nothing in Visual Basic) for reference types. + - + - TextMessageWriter writes constraint descriptions and messages - in displayable form as a text stream. It tailors the display - of individual message components to form the standard message - format of NUnit assertion failure messages. + Attempts to add an object to the . + The object to add to the . The value can be a null + reference (Nothing in Visual Basic) for reference types. + + true if the object was added successfully; otherwise, false. + For , this operation will always add the object to the + end of the + and return true. - + - Prefix used for the expected value line of a message + Attempts to remove and return the object at the beginning of the . + + When this method returns, if the operation was successful, contains the + object removed. If no object was available to be removed, the value is unspecified. + + true if an element was removed and returned from the beginning of the + successfully; otherwise, false. - + - Prefix used for the actual value line of a message + Attempts to return an object from the beginning of the + without removing it. + When this method returns, contains an object from + the beginning of the or an + unspecified value if the operation failed. + true if and object was returned successfully; otherwise, false. - + - Length of a message prefix + Returns an enumerator that iterates through a collection. + An that can be used to iterate through the collection. - + - Construct a TextMessageWriter + Returns an enumerator that iterates through the . + An enumerator for the contents of the . + + The enumeration represents a moment-in-time snapshot of the contents + of the queue. It does not reflect any updates to the collection after + was called. The enumerator is safe to use + concurrently with reads from and writes to the queue. + - + + + Copies the elements of the to an , starting at a particular + index. + + The one-dimensional Array that is the + destination of the elements copied from the + . The Array must have zero-based indexing. + The zero-based index in at which copying + begins. + is a null reference (Nothing in + Visual Basic). + is less than + zero. + + is multidimensional. -or- + does not have zero-based indexing. -or- + is equal to or greater than the length of the + -or- The number of elements in the source is + greater than the available space from to the end of the destination + . -or- The type of the source cannot be cast automatically to the type of the + destination . + + + + + Copies the elements to an existing one-dimensional Array, starting at the specified array index. + + The one-dimensional Array that is the + destination of the elements copied from the + . The Array must have zero-based + indexing. + The zero-based index in at which copying + begins. + is a null reference (Nothing in + Visual Basic). + is less than + zero. + is equal to or greater than the + length of the + -or- The number of elements in the source is greater than the + available space from to the end of the destination . + + + + + Copies the elements stored in the to a new array. + + A new array containing a snapshot of elements copied from the . + + + + Gets a value indicating whether access to the is + synchronized with the SyncRoot. + + true if access to the is synchronized + with the SyncRoot; otherwise, false. For , this property always + returns false. + + + + Attempts to remove and return an object from the . + + + When this method returns, if the operation was successful, contains the + object removed. If no object was available to be removed, the value is unspecified. + + true if an element was removed and returned successfully; otherwise, false. + For , this operation will attempt to remove the object + from the beginning of the . + + + - Construct a TextMessageWriter, specifying a user message - and optional formatting arguments. + Gets an object that can be used to synchronize access to the . This property is not supported. - - + The SyncRoot property is not supported. - + - Method to write single line message with optional args, usually - written to precede the general failure message, at a givel - indentation level. + Gets the number of elements contained in the . - The indentation level of the message - The message to be written - Any arguments used in formatting the message + The number of elements contained in the . + + For determining whether the collection contains any items, use of the + property is recommended rather than retrieving the number of items from the + property and comparing it to 0. + - + - Display Expected and Actual lines for a constraint. This - is called by MessageWriter's default implementation of - WriteMessageTo and provides the generic two-line display. + Gets a value that indicates whether the is empty. - The constraint that failed + true if the is empty; otherwise, false. + + For determining whether the collection contains any items, use of this property is recommended + rather than retrieving the number of items from the property and comparing it + to 0. However, as this collection is intended to be accessed concurrently, it may be the case + that another thread will modify the collection after returns, thus invalidating + the result. + - + - Display Expected and Actual lines for given values. This - method may be called by constraints that need more control over - the display of actual and expected values than is provided - by the default implementation. + Defines methods to manipulate thread-safe collections intended for producer/consumer usage. - The expected value - The actual value causing the failure + Specifies the type of elements in the collection. + + All implementations of this interface must enable all members of this interface + to be used concurrently from multiple threads. + - + - Display Expected and Actual lines for given values, including - a tolerance value on the expected line. + Attempts to add an object to the . - The expected value - The actual value causing the failure - The tolerance within which the test was made + The object to add to the . + true if the object was added successfully; otherwise, false. + The was invalid for this collection. - + - Display the expected and actual string values on separate lines. - If the mismatch parameter is >=0, an additional line is displayed - line containing a caret that points to the mismatch point. + Attempts to remove and return an object from the . - The expected string value - The actual string value - The point at which the strings don't match or -1 - If true, case is ignored in string comparisons - If true, clip the strings to fit the max line length + + When this method returns, if the object was removed and returned successfully, contains the removed object. If no object was available to be removed, the value is + unspecified. + + true if an object was removed and returned successfully; otherwise, false. - + - Writes the text for a connector. + Copies the elements contained in the to a new array. - The connector. + A new array containing the elements copied from the . - + - Writes the text for a predicate. + Copies the elements of the to + an + , starting at a specified index. - The predicate. + The one-dimensional that is the destination of + the elements copied from the . + The array must have zero-based indexing. + The zero-based index in at which copying + begins. + is a null reference (Nothing in + Visual Basic). + is less than + zero. + is equal to or greater than the + length of the + -or- The number of elements in the source is greater than the + available space from to the end of the destination . + - + - Write the text for a modifier. + - The modifier. - + - Writes the text for an expected value. + - The expected value. - + - Writes the text for an actual value. + - The actual value. - + - Writes the text for a generalized value. + - The value. - + - Writes the text for a collection value, - starting at a particular point, to a max length + - The collection containing elements to write. - The starting point of the elements to write - The maximum number of elements to write - + - Write the generic 'Expected' line for a constraint + - The constraint that failed - + - Write the generic 'Expected' line for a given value + - The expected value + - + - Write the generic 'Expected' line for a given value - and tolerance. + - The expected value - The tolerance within which the test was made + + + - + - Write the generic 'Actual' line for a constraint + - The constraint for which the actual value is to be written + + + - + - Write the generic 'Actual' line for a given value + - The actual value causing a failure - + - Gets or sets the maximum line length for this writer + - + - Helper class with properties and methods that supply - constraints that operate on exceptions. + - + - Creates a constraint specifying the exact type of exception expected + + - + - Creates a constraint specifying the exact type of exception expected + - + - Creates a constraint specifying the type of exception expected + + - + - Creates a constraint specifying the type of exception expected + + - + - Creates a constraint specifying an expected exception + + + - + - Creates a constraint specifying an exception with a given InnerException + + - + - Creates a constraint specifying an expected TargetInvocationException + + + - + - Creates a constraint specifying an expected TargetInvocationException + - + - Creates a constraint specifying an expected TargetInvocationException + - + - Creates a constraint specifying that no exception is thrown + + diff --git a/Library/UnityAssemblies/version.txt b/Library/UnityAssemblies/version.txt index c9f0606..7d6ff69 100644 --- a/Library/UnityAssemblies/version.txt +++ b/Library/UnityAssemblies/version.txt @@ -1,15 +1,37 @@ -5.3.5f1:2.2.0.0 -StandaloneWindows -C:/Program Files/Unity 5.3.5f1/Editor/Data/Managed/UnityEngine.dll -C:/Program Files/Unity 5.3.5f1/Editor/Data/UnityExtensions/Unity/GUISystem/UnityEngine.UI.dll -C:/Program Files/Unity 5.3.5f1/Editor/Data/UnityExtensions/Unity/Networking/UnityEngine.Networking.dll -C:/Program Files/Unity 5.3.5f1/Editor/Data/Managed/UnityEditor.dll -C:/Program Files/Unity 5.3.5f1/Editor/Data/UnityExtensions/Unity/Advertisements/Editor/UnityEditor.Advertisements.dll -C:/Program Files/Unity 5.3.5f1/Editor/Data/UnityExtensions/Unity/EditorTestsRunner/Editor/nunit.framework.dll -C:/Program Files/Unity 5.3.5f1/Editor/Data/UnityExtensions/Unity/EditorTestsRunner/Editor/UnityEditor.EditorTestsRunner.dll -C:/Program Files/Unity 5.3.5f1/Editor/Data/UnityExtensions/Unity/GUISystem/Editor/UnityEditor.UI.dll -C:/Program Files/Unity 5.3.5f1/Editor/Data/UnityExtensions/Unity/Networking/Editor/UnityEditor.Networking.dll -C:/Program Files/Unity 5.3.5f1/Editor/Data/UnityExtensions/Unity/TreeEditor/Editor/UnityEditor.TreeEditor.dll -C:/Program Files/Unity 5.3.5f1/Editor/Data/Managed/UnityEditor.Graphs.dll -C:/Program Files/Unity 5.3.5f1/Editor/Data/PlaybackEngines/WindowsStandaloneSupport/UnityEditor.WindowsStandalone.Extensions.dll -C:/Program Files (x86)/Microsoft Visual Studio Tools for Unity/2015/Editor/SyntaxTree.VisualStudio.Unity.Bridge.dll \ No newline at end of file +5.6.1f1:3.1.0.0 +StandaloneWindows64 +C:/Program Files/Unity/Editor/Data/Managed/UnityEngine.dll +C:/Program Files/Unity/Editor/Data/UnityExtensions/Unity/GUISystem/UnityEngine.UI.dll +C:/Program Files/Unity/Editor/Data/UnityExtensions/Unity/Networking/UnityEngine.Networking.dll +C:/Program Files/Unity/Editor/Data/UnityExtensions/Unity/TestRunner/UnityEngine.TestRunner.dll +C:/Program Files/Unity/Editor/Data/UnityExtensions/Unity/TestRunner/nunit.framework.dll +C:/Program Files/Unity/Editor/Data/UnityExtensions/Unity/UnityAnalytics/UnityEngine.Analytics.dll +C:/Program Files/Unity/Editor/Data/UnityExtensions/Unity/UnityHoloLens/RuntimeEditor/UnityEngine.HoloLens.dll +C:/Program Files/Unity/Editor/Data/UnityExtensions/Unity/UnityVR/RuntimeEditor/UnityEngine.VR.dll +C:/Program Files/Unity/Editor/Data/Managed/UnityEditor.dll +C:/Program Files/Unity/Editor/Data/Managed/Mono.Cecil.dll +C:/Program Files/Unity/Editor/Data/PlaybackEngines/AppleTVSupport/UnityEditor.iOS.Extensions.Xcode.dll +C:/Program Files/Unity/Editor/Data/PlaybackEngines/iOSSupport/UnityEditor.iOS.Extensions.Xcode.dll +C:/Program Files/Unity/Editor/Data/PlaybackEngines/iOSSupport/UnityEditor.iOS.Extensions.Common.dll +C:/Program Files/Unity/Editor/Data/UnityExtensions/Unity/Advertisements/Editor/UnityEditor.Advertisements.dll +C:/Program Files/Unity/Editor/Data/UnityExtensions/Unity/GUISystem/Editor/UnityEditor.UI.dll +C:/Program Files/Unity/Editor/Data/UnityExtensions/Unity/Networking/Editor/UnityEditor.Networking.dll +C:/Program Files/Unity/Editor/Data/UnityExtensions/Unity/TestRunner/Editor/UnityEditor.TestRunner.dll +C:/Program Files/Unity/Editor/Data/UnityExtensions/Unity/TreeEditor/Editor/UnityEditor.TreeEditor.dll +C:/Program Files/Unity/Editor/Data/UnityExtensions/Unity/UnityAnalytics/Editor/UnityEditor.Analytics.dll +C:/Program Files/Unity/Editor/Data/UnityExtensions/Unity/UnityHoloLens/Editor/UnityEditor.HoloLens.dll +C:/Program Files/Unity/Editor/Data/UnityExtensions/Unity/UnityPurchasing/Editor/UnityEditor.Purchasing.dll +C:/Program Files/Unity/Editor/Data/UnityExtensions/Unity/UnityVR/Editor/UnityEditor.VR.dll +C:/Program Files/Unity/Editor/Data/Managed/UnityEditor.Graphs.dll +C:/Program Files/Unity/Editor/Data/PlaybackEngines/AndroidPlayer/UnityEditor.Android.Extensions.dll +C:/Program Files/Unity/Editor/Data/PlaybackEngines/iOSSupport/UnityEditor.iOS.Extensions.dll +C:/Program Files/Unity/Editor/Data/PlaybackEngines/AppleTVSupport/UnityEditor.AppleTV.Extensions.dll +C:/Program Files/Unity/Editor/Data/PlaybackEngines/MetroSupport/UnityEditor.WSA.Extensions.dll +C:/Program Files/Unity/Editor/Data/PlaybackEngines/TizenPlayer/UnityEditor.Tizen.Extensions.dll +C:/Program Files/Unity/Editor/Data/PlaybackEngines/STVPlayer/UnityEditor.SamsungTV.Extensions.dll +C:/Program Files/Unity/Editor/Data/PlaybackEngines/WebGLSupport/UnityEditor.WebGL.Extensions.dll +C:/Program Files/Unity/Editor/Data/PlaybackEngines/LinuxStandaloneSupport/UnityEditor.LinuxStandalone.Extensions.dll +C:/Program Files/Unity/Editor/Data/PlaybackEngines/windowsstandalonesupport/UnityEditor.WindowsStandalone.Extensions.dll +C:/Program Files/Unity/Editor/Data/PlaybackEngines/MacStandaloneSupport/UnityEditor.OSXStandalone.Extensions.dll +C:/Program Files/Unity/Editor/Data/PlaybackEngines/Facebook/UnityEditor.Facebook.Extensions.dll +C:/Program Files (x86)/Microsoft Visual Studio Tools for Unity/15.0/Editor/SyntaxTree.VisualStudio.Unity.Bridge.dll \ No newline at end of file diff --git a/Library/assetDatabase3 b/Library/assetDatabase3 index 5875acdbcbb81603168e9c2bbc0876cda03f38fb..9542fdf4c6d3a87446470286719d36120802e2ea 100644 GIT binary patch delta 163173 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�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 delta 10659 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 GlO_P3^(0^b delta 167 zcmZorY_QQ}U|%e;9aQ!(%41xz|jnv6iU8Mh|L dls)O}U`-(Qi%ZIIb|3qCFq;WTg0#+N0sxmzAxHoK diff --git a/Library/metadata/00/00000000000000002000000000000000 b/Library/metadata/00/00000000000000002000000000000000 index ca1c2d857cbc35423b125f546bba9060eb488de2..407f9938736cef62c4969fbfab76bcfdc6c60bd7 100644 GIT binary patch delta 347 zcmaE;_)t-Yfq|QsfkEIQ0|SE~kOoo=45oT!dWLC+4FCTB|If$_6kuTi694~i)V#yW z&Ie&n=HQ5vWME)qU}Ct(z|f!#QU$~y)r<@blj}Le!Lp1DZA=UeM;I9zcz`mjP}%iR zStbTOW`+h6peP3rvqNPcu!(K{%5jU4ofT>oCmXU=%0OkvRyDBUvuXoW7Gf39yJ%LG zGBQpMV~+=t+t~dWnI~W564nGN0(%5RHvln67tm8+=L0E*4M1!N#7vtFxo@*fcHowo U%p+jPyx$;lvLScR{M=h(y< z88<&;`@m=gayii12v7rLg1pSa^8Y_b6s!P9HvlonTOcR!f#fDLatm{S!h{vb+pNg_ Xf@Ly~fFbkA=soRSZYymW`3TPg7HS<&x|b6ObiSF_ooZ$ delta 15 WcmX@ivWjJb#m2yQj4Vt{3=9A)Q3N*t diff --git a/Library/metadata/00/00000000000000003000000000000000 b/Library/metadata/00/00000000000000003000000000000000 index 57c066680c4fe81a78dda578ccf58921a6899207..de80ef13166ee0c0a7363bde20f70e6c16591f40 100644 GIT binary patch delta 347 zcmcbqcvDe_fq|QsfkEIV0|SE~kOoo=45oT!dWLC+4FCTB|If$_6kuTi694~i)V#yW z&Ie&n=HQ5vWME)qU}Ct(z|f!#QU$~y)r<@blj}Le!Lp1DZA=UeM;I9zcz`mjP}%iR zStbTOW`+h6peP3rvqNPcu!(K{%5jU4ofT>oCmXU=%0OkvRyDBUvuXoW7Gf39yJ%LG zGBQpMV~+=t+t~dWnI~W564nGN0(%5RR{$|c7tm8+=L0E*6+mnV#7vtFxo@*fcHowo U%p;)7yx$;lvLScJ{M=h(y< z88<&;`@m=gayii12v7lJg1pSa^8Y_b6s!P9gTz7J0y%*XBsZCnTbKhBCagf-W<~B7 WER%TzbeT^^hfh}I?wEW;KokISs4{W@ diff --git a/Library/metadata/00/00000000000000003000000000000000.info b/Library/metadata/00/00000000000000003000000000000000.info index e220c12f2c05f5595a7ec0b612e04bfcfaf54b8c..6f1239c3ada7c0f4327e1b77fa78f8cb14d57820 100644 GIT binary patch delta 36 rcmZ3%a*$<$g-CH~QD$OJW>soRSZYymW`3TPg7HSoCmXU=%0OkvRyDBUvuXoW7Gf39yJ%LG zGBQpMV~+=t+t~dWnI~W564nGN0(%5RHvln67tm8+=L0E*4M1!P#7vtFxo@*fcHowo V%p+jJB7Vdma{M=h(y< z88<&;`@m=gayii12+#mzg1pSa^8Y_b6s!P9HvlonTOcR!f#fDLatm{S!h{vb+pNg_ Xf@Ly~fC-C`Tx$4aMedHtX9Oex(AF|5 diff --git a/Library/metadata/00/00000000000000004000000000000000.info b/Library/metadata/00/00000000000000004000000000000000.info index fab67de721c3689aee0fc6ca237035964172becf..963c9de69c18fb2e5d901552074429cc47a9759d 100644 GIT binary patch delta 36 rcmZ3>a*Snyg-CH~QD$OJW>soRSZYymW`3TPg7HSoCmXU=%0OkvRyDBUvuXoW7Gf39yJ%LG zGBQpMV~+=t+t~dWnI~W564nGN0(%5RHvln67tm8+=L0E*4M1!N#7vtFxo@*fcHowo U%p+jPyx$;lvLScR{M=h(y< z88<&;`@m=gayii12v7rLg1pSa^8Y_b6s!P9HvlonTOcR!f#fDLatm{S!h{vb+pNg_ Xf@Ly~fFbkA=soRSZYymW`3TPg7HS<&x|b6ObiSF_ooZ$ delta 15 WcmX@ivWjJb#m2yQj4Vt{3=9A)Q3N*t diff --git a/Library/metadata/00/00000000000000005000000000000000 b/Library/metadata/00/00000000000000005000000000000000 index f8627abe4c33ed4145dff24cb3b0471d8fcfb4e9..75a0ab9577cf9bfa06ef88b883e165e23b018a52 100644 GIT binary patch delta 362 zcmcbqcvDe_fq|QofkEIV0|SE~kOoo=45oT!dWLC+4FCTB|If$_6kuTi694~i)V#yW z&IVym=HQ5vWME)qU}Ct(z|f!uQU$~y)r<@blj}Le!Lp1DZA=UeM;I9zcz`mjP}%iR zStbTOW`+iRpeP3rvqNPcu!(K{%5jyEofT>oCmXU=%0OkvRyDBUvuXoW7Gf39yJ%LG zGBQpMV~+=t+t~f=K+Xrb9}Y^OEU*NST>-=(LqKX26qVS36vGN2HUwg(&5GQwStc8B W3ryw_&}80k5II?qyI}GP0Yd<<^ffd9 delta 339 zcmYjNv1$TA5Pj?It=?V0vr+7F1_VJa9O7>zR$2&_mSS-MJFoEzrcZsHh+mN=T_6XN zFUTi|o0+(v3vXwb_ukCxR!Nl%fT#_`6@Vs34!}4arQ>CWi?vpHT+kXg3{SrHIic^y zqN|`#!w*nA3C|E6SLrqAC`Io^?rqR<%G5(KWJQBfcglV6M)UfF@-SAQUHGDnv~QXP zTUX}Z`s}PSNQQ9xyA}Fe6~;LB^MCk0Xdln!OHE}nvE5G2sk}*RYo&Ts02|I_OWDIX h?lI{}UzCiDAz$D#cWgz!njYeT_c5PQD_T<-XMZngGll>F diff --git a/Library/metadata/00/00000000000000005000000000000000.info b/Library/metadata/00/00000000000000005000000000000000.info index d9df32d2ec11913d6b21d9738f4acd687c56d30d..fade0c91985afc95f5f1c8f3b97f23601dedb096 100644 GIT binary patch delta 38 tcmdnl!gQ&HX@Z4FacWU!VoqjNYD!pYQE_H|o|S^}Mq{QX7Of@*1^^&e4J!Zu delta 17 YcmccA!nCu6X@bSZz`uoCmXU=%0OkvRyDBUvuXoW7Gf39yJ%LG zGBQpMV~+=t+t~dWnI~W564nGN0(%5RHvln67tm8+=L0E*4M1!O#7vtFxo@*fcHowo U%p+jRyx$;lvLScJ{M=h(y< z88<&;`@m=gayii12+#mzg1pSa^8Y_b6s!P9HvlonTOcR!f#fDLatm{S!h{vb+pNg_ Xf@Ly~fGP9I=soRSZYymW`3TPg7HSoCmXU=%0OkvRyDBUvuXoW7Gf39yJ%LG zGBQpMV~+=t+t~dWnI~W564nGN0(%5RHvln67tm8+=L0E*4M1!N#7vtFxo@*fcHowo U%p+jPyx$;lvLScR{M=h(y< z88<&;`@m=gayii12v7rLg1pSa^8Y_b6s!P9HvlonTOcR!f#fDLatm{S!h{vb+pNg_ Xf@Ly~fFbkA=soRSZYymW`3TPg7HS<&x|b6ObiSF_ooZ$ delta 15 WcmX@ivWjJb#m2yQj4Vt{3=9A)Q3N*t diff --git a/Library/metadata/00/00000000000000006100000000000000 b/Library/metadata/00/00000000000000006100000000000000 index 062f91b5198606fb50c6f5fdf15582d0f6ef3fae..ef4f527deef4b6ec97f5a2ed225dd8cce2841683 100644 GIT binary patch delta 348 zcmaE=_*7Acfq|QsfkEIY0|SE~kOoo=45oT!dWLC+4FCTB|If$_6kuTi694~i)V#yW z&Ie&n=HQ5vWME)qU}Ct(z|f!#QU$~y)r<@blj}Le!Lp1DZA=UeM;I9zcz`mjP}%iR zStbTOW`+h6peP3rvqNPcu!(K{%5jU4ofT>oCmXU=%0OkvRyDBUvuXoW7Gf39yJ%LG zGBQpMV~+=t+t~dWnI~W564nGN0(%5RHvln67tm8+=L0E*4M1!P#7vtFxo@*fcHowo V%p+jJ(!Jjxa{M=h(y< z88<&;`@m=gayii12+#mzg1pSa^8Y_b6s!P9HvlonTOcR!f#fDLatm{S!h{vb+pNg_ Xf@Ly~fC-C`Tx$4aMedHtX9Oex(AF|5 diff --git a/Library/metadata/00/00000000000000006100000000000000.info b/Library/metadata/00/00000000000000006100000000000000.info index affc8eebcf8fac69209f58f66f447f163f8470a9..b58d6a35e1c190928e97c8ccfe235fbd569e6d1e 100644 GIT binary patch delta 36 rcmZ3-a-3y?g-CH~QD$OJW>soRSZYymW`3TPg7HSoCmXU=%0OkvRyDBUvuXoW7Gf39yJ%LG zGBQpMV~+=t+t~dWnI~W564nGN0(%5RHvln67tm8+=L0E*4M1!N#7vtFxo@*fcHowo U%p+jPyx$;lvLScR{M=h(y< z88<&;`@m=gayii12v7rLg1pSa^8Y_b6s!P9HvlonTOcR!f#fDLatm{S!h{vb+pNg_ Xf@Ly~fFbkA=soRSZYymW`3TPg7HSoCmXU=%0OkvRyDBUvuXoW7Gf39yJ%LG zGBQpMV~+=t+t~dWnI~W564nGN0(%5RcK|U+7tm8+=L0E*9YAae#7vtFxo@*fcHowo V%p+jI(!Jjxa{M=h(y< z88<&;`@m=gayii12+#s#g1pSa^8Y_b6s!P9cK|WSTOcR!f#fDLatm{S!h{vb+pNg_ Yf@Ly~fCWq7xrFe^irhVuuL#Hj01x{!SpWb4 diff --git a/Library/metadata/00/00000000000000007100000000000000.info b/Library/metadata/00/00000000000000007100000000000000.info index 2e75dd7fa6b293cb28bd3cbc444bb15a47df76c9..a0a78b5b2fcad105edaf986d5a680705a9fcb734 100644 GIT binary patch delta 36 rcmdnUa*Abwg-CH~QD$OJW>soRSZYymW`3TPg7HSoCmXU=%0OkvRyDBUvuXoW7Gf39yJ%LG zGBQpMV~+=t+t~dWnI~W564nGN0(%5RHvln67tm8+=L0E*4M1!P#7vtFxo@*fcHowo U%p+jRyx$;lvLScJl5@F|!N z2!smGK>n({gw83dcV((zh`^ir*fiBb%g%{- zY2(gKaCk3RvTCzeS}6tj)5b)*Z~IFlbuPAVFPBnJHpV$cuLF{E2|Y_KG?ilt+kyUx WFWoK)e+)OG%sb4coP_Uuj5-&ngfhAS diff --git a/Library/metadata/00/00000000000000008000000000000000.info b/Library/metadata/00/00000000000000008000000000000000.info index de5d9a3b701210f8ad7288917801c9cecb1e1d9d..94385d41d6cbb71115c0096315ea0106a1b6d9a1 100644 GIT binary patch delta 36 rcmZ3>a*Snyg-CH~QD$OJW>soRSZYymW`3TPg7HSP9BUBw&cKcc*r?!%WZ8 z-7D@z`lJV0kAfalJc!^$1G#t-qN1YUWd$#KQF2xBrnvt9_0hB4j=~~>$iAhhSHG@) zRrB7fSG^+ZZWg)r2N7A19-YWYb+|e*U6bFJmX^E{K)EdP>5y0X_~%Q%OjI{KbMWbJ z)(nByJ&^&v0of;#V*ZjIq#_>v-Y!Xc!IKoPW8|7AUt#Vb#$3+5??L1I>%cgl>rx!w z0-c&X8pZix3_9&xO$c%Oc?vq$y@oI)AIR;8e(JX$L<@7- z^82Ar4L5#nVNA9GjpF>{{JhcNj5|N`ImOL)e!kw|j5|Nyka16*h5kGm*S#_01M(*P zvw$)8cT<7CV)>>5f5Y<41^$lZ$X+enC+)v)Ie!Pm@ei~va*L)te#!D%3;YYqZ!7Rc z%Wp4mHDk?U5;oum6RZqCt8 zOyW7JqEUEWcpgW=%NXz0ROE0RtK^tU{JNj`(wYmJ(u8(q=&b2$w%=p>;j=R9Co_-x z9VJQ7QAZ->C#oskC};(t-##+qhb;x08PQYS_%)sDrdr%oi@ zNIjvZr5#MEFjh~_&nl_Fp=-Cj{K=ymx4u~a?yZFb-|tvty?9Lf-8gzB^_{hB5p|!n zj`f|fV;(bpu8x$J@hb9(dBJ!ywr0L3FAPZfk+sA6-p>x}yW`94u)aGx%-45ehxy7i zyp+%KbynB+L*)6q@74Ewon?JDd2H^L5sYb{zuBCJynXt_oQJ%9UElc(>mJ9OJXf^a ztM8snfF0Cx+!c+xS55nK?L?=)G#W{?|7bHnaF0HhAg)0-d`LRy9tqlNybh&-l-J5J z6~}%{0gcC}{U{8=mJGt@zkT`o#UD3aURd}%d~Mg%*QZ#9yLL%*E4to!75r8B-E~n6 z|6aValJGk_#qc{je;fV}>F#`Z{%QCRVE_MC_?f~7_L-h5Y{@Fi_X+QhC-uv0-^-ew!Oh$e*uhVqAGuw?46|Ep$PsS?Jg}rl5n|OFG zY_^rI$T@P#j{+ZcnQ5ihWlu@b`1x8cn@>|c!E%-y=Ki34<~||c1LtvOS*+M+7_Q2y z2Ub0>>Vf~Q2i(72{Fk8-b2ihgb*sC91vQ$UGLUXl3m4KO8*`w5q;p1-0in)E)EFOm^WjPM)0*E=gnY}1lI`Hu z9>`{;dQ^)pIFQ1OlOQ6WRLk}hct&csXOd;No9zYps3Hd~np(#^VwLQBw8)&{)Sw-x zR>eh4ZqI=v?IDhlj<(x?Eo=QJHH4us4+%be=g9(dIWNrZ`0g=LjfM6w9&ZBml0+%I zXd2FvQ|Z^Yq88R@Ij7^Qmwd~Vc0egz-vz;N((rzw?-Ds1d~IoCmXU=%0OkvRyDBUvuXoW7Gf39yJ%LG zGBQpMV~+=t+t~dWnI~W564nGN0(%5RHvln67tm8+=L0E*4M1!P#7vtFxo@*fcHowo U%p+jRyx$;lvLScJl5@F|!N z2!smGK>n({gw83dcV((zh`^ir*fiBb%g%{- zY2(gKaCk3RvTCzeS}6tj)5b)*Z~IFlbuPAVFPBnJHpV$cuLF{E2|Y_KG?ilt+kyUx WFWoK)e+)OG%sb4coP_Uuj5-&ngfhAS diff --git a/Library/metadata/00/00000000000000009000000000000000.info b/Library/metadata/00/00000000000000009000000000000000.info index 90cbf24bf9ba9822e3f4a735d374d7cecc3dcb85..5347fb6c16255b3aacc169bec9f3a6d20fef7437 100644 GIT binary patch delta 36 rcmZ3>a*Snyg-CH~QD$OJW>soRSZYymW`3TPg7HSoCmXU=%0OkvRyDBUvuXoW7Gf39yJ%LG zGBQpMV~+=t+t~dWnI~W564nGN0(%5RHvln67tm8+=L0E*4M1!P#7vtFxo@*fcHowo U%p+jPyx$;lvLScR{M=h(y< z88<&;`@m=gayii12v7rLg1pSa^8Y_b6s!P9HvlonTOcR!f#fDLatm{S!h{vb+pNg_ Xf@Ly~fFbkA=soRSZYymW`3TPg7HSoCmXU=%0OkvRyDBUvuXoW7Gf39yJ%LG zGBQpMV~+=t+t~dWnI~W564nGN0(%5RcK|U+7tm8+=L0E*9YAae#7vtFxo@*fcHowo V%p+jI(!Jjxa{M=h(y< z88<&;`@m=gayii12+#s#g1pSa^8Y_b6s!P9cK|WSTOcR!f#fDLatm{S!h{vb+pNg_ Yf@Ly~fCWq7xrFe^irhVuuL#Hj01x{!SpWb4 diff --git a/Library/metadata/00/0000000000000000a100000000000000.info b/Library/metadata/00/0000000000000000a100000000000000.info index e2ae1e72b156f9516cd007c9fa3e735b1d564193..0827fee487539d9054094ba65702d3d1282f2403 100644 GIT binary patch delta 36 rcmdnQa++m=g-CH~QD$OJW>soRSZYymW`3TPg7HS<-;6BEObiSF`Y#L$ delta 15 WcmX@jvWaDa#m2yIj4WJC3=9A*i3C>w diff --git a/Library/metadata/00/0000000000000000b000000000000000 b/Library/metadata/00/0000000000000000b000000000000000 index 3e152dc84df77a0495042cd91190324658ac7e65..119d89e7cfa1dcdca80ea17b0df58372fc0c7915 100644 GIT binary patch delta 348 zcmeyU_)$@Zfq|QsfkEIS0|SE~kOoo=45oT!dWLC+4FCTB|If$_6kuTi694~i)V#yW z&Ie&n=HQ5vWME)qU}Ct(z|f!#QU$~y)r<@blj}Le!Lp1DZA=UeM;I9zcz`mjP}%iR zStbTOW`+h6peP3rvqNPcu!(K{%5jU4ofT>oCmXU=%0OkvRyDBUvuXoW7Gf39yJ%LG zGBQpMV~+=t+t~dWnI~W564nGN0(%5RcK|U+7tm8+=L0E*9YAae#7vtFxo@*fcHowo V%p+jI(!Jjxa{M=h(y< z88<&;`@m=gayii12+#s#g1pSa^8Y_b6s!P9cK|WSTOcR!f#fDLatm{S!h{vb+pNg_ Yf@Ly~fCWqJ#pv+KirhVuuL#Hj01$dJV*mgE diff --git a/Library/metadata/00/0000000000000000b000000000000000.info b/Library/metadata/00/0000000000000000b000000000000000.info index bd903b2b9dc509ddd249e0db534cbecaf6f52a04..54067b1752180e387ed033493b5497095769892a 100644 GIT binary patch delta 36 rcmdnUa*Abwg-CH~QD$OJW>soRSZYymW`3TPg7HSoCmXU=%0OkvRyDBUvuXoW7Gf39yJ%LG zGBQpMV~+=t+t~dWnI~W564nGN0(%5RHvln67tm8+=L0E*4M1!P#7vtFxo@*fcHowo V%p+jH(!Jjxa{M=h(y< z88<&;`@m=gayii12v7rLg1pSa^8Y_b6s!P9HvlonTOcR!f#fDLatm{S!h{vb+pNg_ Yf@Ly~fB{SI$>{LOirhVu&j?5Y0Ngt>LjV8( diff --git a/Library/metadata/00/0000000000000000c000000000000000.info b/Library/metadata/00/0000000000000000c000000000000000.info index 36cd4030b0bd6e9af899e7c2ebe2e9fbba0e8041..e71d9d3eca32dc384a578ef69b8c6433680073e4 100644 GIT binary patch delta 36 rcmZ3(a+GC)g-CH~QD$OJW>soRSZYymW`3TPg7HSEauZ5s?`4S9B*9aq#a_LE;Y_iSasmwmI@8=H7%pm$UCX&^Z4VFwW6LJ0RW3Hw9PxzFneV?Ez-p|O##19tY27vwvz9=t<4>&bO1 z$YJo8(Ad8|<&M0Cxx3M)jSXlN>xW6`v~vR?#O~*L=v?Nc*(NlK^^f)QW`k31{mgNSop1eotHCL^e!eZ`j=T*00vgvvc4?uVi}24P zdfeX~25URyZzlZC9Dh6ETXOu}gx{6p?~5j&@)Y z&runT!t=uOI0{}we?U`_C&Exghg9TEc#$X7dA}kRXr~5Go2Q#RcO}oE(=z8pv(I{U zC6QlO+Tv&=S=u`Cz5mLBNcLK zqhM{LU~!{hb)!6Lm0_zqW|a}Ej9TS!tGF%Gscknk?xxn=)VvG(HSe6Nh2qguN26w- zj;I-_`7f$QsE(bVQ&NIM*Y~~t@iUuyUz_;;oy9#rY+q)*IH3J*9NkHMXDwSs-Dj<1 zeP`^L$Bdt?BZXDGjC^8VFy4%n_y>wB=neB~NW z%&}~p)%ATJc{cA`^*vi>S>H__n|oy#ecINgvErGDlqzow=ppiCp>wQ@*> zp;uKvQ{hQ3X!wn)bi?Nh?%B)z7k0k!+|wg_%6qp)EW_A}{zN=Fy53p#uN8ilBZfF1 zejeve!f);5!*A{UZTPS9yRzZ=x8Wbf{{O4+GkwPs`}A$Q^x|=CmtMTyO`2xYi`V<= z^gWI~_ph(__^^-Hp$c?OubyhtZw;o$(u!!-ZiT_NudhT9=weZ+fLscg4z|+Q5@OTAahQ!MI+Fx*({l_ z5@V-l PgeP;|bY+~ItI6aSZb7lK diff --git a/Library/metadata/00/005ed5a6df2f5ff468efd6497d37fefa b/Library/metadata/00/005ed5a6df2f5ff468efd6497d37fefa index 5a4cb29ec4bb6c82f6950777f0d2b618873a5e8e..8b17cb7d57c1565c773bc764fdabcb0eed2c16c3 100644 GIT binary patch delta 474 zcmdm@xJOZkfq_$%fk9vo0|SE~kOoo=45oT!dWLC+4FCTB|If$-6kuTi694~i)O^4y z0i<&b{0h!rb^4ZlIb_u_)BbakK-s3ra%`SJ1|tI#!#xIu25pcwAZ7+)Mh1q-4Q%3I zSw@C7CWeM1j0_DtKp9r3>;|YT6N4TzLxTxWlmm#_p|TIy#26bUe`oWP176^mHg@D404j^%6uv?{pdO&U! z28n|)GeaOyZ59xN_#$v|h)uabKFAzVAdP0e8Q20bkOl`#3&cU$+I~uCtu_c23rCOMG)u!Vo>NXZWiRc!8VyyV6h0uAs_&fh5-Pi CpIue} delta 365 zcmdm^xJ6Nufq~;61B1X81_lOxAPuA#7)Z!e}a^pejYcDn-F6#Xu?<#V1#A zxJ|yuVPXO@83sCl3{YsWu>AiI5@Uu+fW&oxm327;((wuqWf`3HzEpnaX@ zs9mQXCXKzRjQVI76ug~u4xnkYT(O*tw#JMAQfMYWLMc`3zslOAr-emkcGdI`qa4N&^F0>(`?;apu z$5I~c?g|)y%XVJ@9<6QnmEe>R&y}PT_S+U!KFlL(m^3!p^1jfC;+%+DMDd?XMa1dQey)C4%v{FV3Qh_AZ~^TR zCv@5X1Mmhte%?z(@co$26XSD#;^z7`it&kgV|+D=@p&L~qkk2Zp}&Oord_GO6!oLf zlKKaM>rLt(%-rbTLS^VLqy1d^uR{H3t$sVW-lRUpyW!?KewxY+v|+76Lcd`hxQFuK zG>>%x$924qN;tpEU|k>l0n1l_M^PuD9w+{DDkA=F+Rrt=dYH@WdkDDR>earqUWM0} z)=R6y*EfLvVa#R!uLO@mOZGqJ zpnMB8hB%J_572g9p~zGMv`W`68ax;8CorO=7+b8hy%pTqw^83u7Zb;Lo&*oT z<+w^Qm*dI<*ISd;3D=o4*KZc%e~NjF82{6()1v25sFUIP+X)>yZsT7dba2l#@hlMI zJj>kp?X-S#tS|lMnM=O~){%aTTwnSeNBVsS*Oz|rtZ4M5-*>W(^m`%Kmwqn-k0MSvp5Mhf((lF0jo(wP-*6e}tY&_EM`@o}!Q~G^B>qx&JU~c@r$@;wl zJb;e$dnI$}_k-YilYT$M^`+mdm`lGOW*zDGBV1qly&61-Uq)rQcgwNBaE~*Oz`j&0PBZ4C_e0pXK_}?``1GTECxT9qIRW=Em=B*6-)RgId2| zU@rZBk#(fsFL8b8_sh(s->@rQdI`j`VvU*Oz|32_CKWdq3+)zu#hR{61p+ej7Zf_4^&>((iX! zNBaF9*Oz`DU@rZBpLL|)A8>u?_lMxoTE7pnj`aHwbMs#OSMu9H>_-(Gzf(PH`{Bpn zL2W<$gt_d8hgqjdJP-er>&t$41Uw3T*$+Ph*ISEt9{xFVbG^2&H_!jS01t4ETyKBL zT*mn;){$}kn(NCre*+$czKrv?tRv(69di?>W8?ficu*VXADGKH|HwKr&OdQ|8Rw(m z(b_m4V;vdipP8FDyKJ0~g9o*7{)M@W^RKKU<9vea%Q*iA9<7b@N!F2Z{++prGiKv_ z3OuNd^B>G*oKLfkjPn_;FXMa`JX#y)KUqh{`7h=s&b2nqE#N_IoEYSW%Qz$8T1&=R z$Mt2L_25yQBgZHGFk^LOob#BQ-)E+6oQ&Kyka?Z{{pVuR$2zus1s_%_xS2R1wL=xZ)AAiHPfWWhucXGt{L+yFsf=GJ z4Q%wid^uCdAFXo9Rhg_e6r;?T>rZoL)XjM+`cllgQ)eJe6M_B$4NHR8D_e|%!)A69cFsM%pqas&@gjYm{}QSI=4!*b|;H>vU(@W zcalB@SzbMy7^cjsQXv=jr)gy5l55>k#?AZXHD#~VQC04&DtA?tS5%d|tI9nU<-VCr z*3aZCo3N;|6^kkxvZ%5xiz=J52rW*yr76$nOlS}-n?oT%!;+v~Nzkk$XjKw4I$Fpl z{1V1g3O#wOw`oJ6lq%B^8(9Sz@ygQ}jfK2N9gmB_qcNAH5tNuIrQJ!-%oa!xTb0@9 zrB==4Co!VKBahK^?>g)3qc1-8-j7^0a(mO@qhCI&jh2PYv|)KbI+T_R{FJB*0r<8* z$?iavw)IJNe>#Sxh?>+I_{kri2->OKWRF1`|DNlUY^c+?4W0SS%_q&5@{=qc38{bd zPpu1Ruf7Ct^3&o%@BmzX(%BxI5_sh&9rU58FF)z*$XtHXSp2G^U^--o%;Pg5EC`_g_ceTVQ|`isH!CiPn_w>L7HttJ0O z-Ab$POSvQ#hM4QSG^6$HrEeym%6j^CD~Mg6R6~PO_jE+&-T9Y0o)~Ulbn-E;d$6g4 z!opV}dXdrT#Y}H{D-1AfF%-k|F^%yT8W>j899>+KLXOJ?jtwc~ZIlO_2S_R82U8v# z(;ErP0sit~1?6#hFuhfv>x(Z4SVHEyJk8*Glb5H3c|=`C`bSb38r#u^gm&R;kn)H} zPjAZ+&k2-AJX@!?9Pa3+x#Gd}o+}>oso@cYex9N-7^XK;*gs)EV|pWnJnUy2M+$k^ z&s(Rrxn5yEV|pXO?=0=#NE_P4^hSctmE`w)omWav?+Sj2<(S?`Vf`y~UMWm(q>x{$ z^GacQBZd5ComWav?+SjK<(S?`Vf{OFUMWm(q>z6@=as_rMhdz9Wr50idROp=bzUil z_DErU{boz$#hPyA`VEj6rZ-Yp{~4WE3jK`~^6-sfKZBWvPu^H&k;3}B(;&b&I6zb6 z&0omiD>cU3f#89zFUJ28=5l#m3Qh^jF2?Qa>1^m61Q>uf2pxL_SSkP_Y zI?S7BfSP-?)7n2%_6xbtmpKx^?ZkW#a9-Vf&bNa#-I=5|jXmr3?(Ls4C(aW%H4Z6)^bd_}r&CMrF z(2#U`vm4w^Wv728n|0#pv~$9`63HQp>dmVPQxw5SA*GRRp}Bc=amK!455=6Go7#olG4k@mARIVt;dXts#E$`+gf_al-*pBe$?oS@yI*EaKAJ& z={vJsX)}V-*@EkLJH!&&ZhwRcshzf{8p*P*$sNZxacNST-Z9LQ zKAIn~YMvMv>mBc%7{J47?D)~%k)eJ*Cq6oNSodELQTV)OI={R7j}jt1Pu?wpI22{ZnGLY*22n|1 zJgQuOxmQ|%-H;>*Jo3RB+x-Wgk+t2Gq)^A~WYJtyOhAjIaTYIFX-_?JG$z8~fp%bx zQ>3#reW+GTI-9TO>jec|0Ilwqb+fE!x(?DFyp6EBnf|RZEzqbz*Ek|!xjWNAgF3Wv zRRhl(mj|N^^@c1S5?_HF1K4sfCf|8B5R^kZu48J=dK)AmXtEuQRpM;ooTt7D-gSR| zxmg@4RDfcAWT=Ys?)T4u0lB`@`AhSU>9QOm~=L`FbgbX4T{RGQb_yIHn o>5k+m{Bh$Y@B%4nlrAiHXh(L&GOthL9{D5KopF4M^yWl$JG@u{-g2TuA|NI`JnSKhuzN#g+dDk$AlK z*KqOpOn2U@0=54bKmX|<=pGk*`3d(@h4J6rs*f>+Iap~5)9-`ofl(rbF`nx&)vJu@ zlcbU=)ioYfVSP&A%tcSJqIB`$G}ZUK^g&Y56y%}UKAxAZ`lxrxonwg54D}OU1NB>} z=GxRDu0j1*s(Cgwou7s}0mG%t1vYgG{{`xNsTSGPwcI;O^=*^tM4KAp6{A#bpHxc{ z)T3Z0VVPi)E$$FAJtzIA*!UNcPfg&1SedUSpO(OB#eOvSG=|L=&0MUTGGK;{|Ect4 zWUss}RoY5wW>lubSfH5(7W`dod9LJT37op0!5cGFZJ|`}Pf)KQsv4XQ$}GY2k&&HVK|}sW^h`>xfV~#qp^85!A$gkjc=D7JZR%>l0Rf|MGUk<^7(>~ zEYm*87YL4Fnd{dlg@p+LG~<(!S0wPO{JqgR!EdBem8c-%n&gXY{BOw@+js^lnU3}n z;+4jTzQ@|-fur=}OL=^>sx0Hf9<^*a`JgE*g_T2p0{xNC3W7RuCtHEo#WHp!uR+mP zQ$!`Hsp1Idz=L{R#kDk5TTQAkr%=s;SOZ3la?**3!HJ^Q3Od5qp)cY!Hg29&@iK!( zdC-^M41elxo#C%p!c$UMpOA+#|&(7vlJR_{08#SdOvRP^;W=;6#Q0zOKhB3 z{WTvl{B z?ExAM%O$pzCQaM7U2w5}NxKo^jajO%%~IVW%G}9zeh6xZrKX9cF)N{yU&vDZJA_I- zrYG%8*v8E%MJ(hHGHR7P7!v!gA1Qg9l%J89%k*|<6Kr!B6C_eGvu+dbl4qwzx?wLymuonv~}B%bTN z7FSp~;+DzSXTaHK#;j|=g0Os`9vC&sL+_CuC(j(4U40lb{;_>R9Fb2*{+x|}DEWRH zzu@GZW3x50Dh}9WvnXD$@ryFuixzjVpTTay(!pLLu8$1M%>OcRG;=mG|5kR;;6k9c zmKV1$TE0UzULyG`#4E|iA+}%^I34d^;=1S{=>YWc;jwBNhiGhyGig%}Tin>t)iT== zv7tw4L(5*Ze3Cb`-{MB>Mj3ld#J(nCU$=acW8bj25gU}T$3^U$6zhA-@=1;z;1$`C zoXGm+i|PYi(O5XZ+8S2}+XMcveCC(3uk!0^Ki9|I!%vOtc5R6GTLS!EpHHjn3G z4+W#U4K5v*b%fjeQ3KVYuVy@Jc#HiyvskzHm<=!Ciq$J)2G z2AYy-RVdW4D^eBeZ1vZ5VjR>1oNIOl!r@?3Q=pw0)2?gfJ-((f|DQd-={vx+@jv8F zz>?!M4P3sm;q4u_t5=>YxwG@^P%&M@ZY#YNE97qiD#vUvoOu+dI9a^|xb)Kx1BLZo zHh&$^ZwI=U)2qg9_`Ru$KHQLbW`Z-FHHdl8g?tzS4Y!O0G@3VYvx9O2 z3r<(LTQZTjqU+?Je4Cj??*$)S$l(Y}elN^9)9sq6@B&{p|0?zTLfT~ENB>hZzixye zpX-r`a_MKMk_)?xhikQ7=HS;0RQ^uE03RrD^8TU>USF8+Nfkc$G5Ks^F+Wx4;U5=H zPor=oxZvPbh3XVKVoL(e{#Ym~tHG=q2v`eRZ}Knay#;r>XecRMDVi&~nOB4Z)YDV6 nzo$rnIbbO;C(H#)g}GrKSQ;!HHVT#j8x6bbqn;w~k=p+N&&H)v delta 3516 zcmZ{nYfx2H6vy{D_W>77P>|yV6$DZ4;>@s-L^OS3G2 zou#1$Gfg#9=VnIq{5g?^;FU;~MzC!W|d*bn$}Lq?T?F~f{{2NAcyDe6Ju7?e42YqqH-7JLD%pqi^s z<0Zp2rHp@(t0~jFGc{$#>D##_O6pQQ*f_VPC9+v>NJ>yChe};W&m_k35T%NGe;}h~I`|36AF{c^(A&mIaH{bvn{1Q^V4Neb_3Vw2! zraa1{Nm|EzJJ!WAa8)RK&Xn`ff1N2>C zWk|kCZs2j^262^La-}k3xfE*Xp;m<)rEI2U?PDo%3|c;j2&+zY1P$UIQ75D;>QT=- zhim?26cHdbDWNJ)@bkm9j^(7nRK(s?nGwaj)JiL0G^l2MnB8j0l_s{i)k#k}_-4#Q zC40)jcSyd<)_{jXPP$Nx)HjqdT^A?ID}=W7uWGXy5?Um)H`ecERRBMveo2- zKHk84)3so;t@=bE=(MR2ErL@aQW8!kZgOxd!_78VME|}eYq&)`BewGNBn`i*4VhZUbMT~Y zr3-ZmUKgb2cADWlag}`qb`4etw1YT?!d#-sTxdz^%AJD7d8XtY4n9$G!{l}LL^GwZ z%Mnm1`ECcVm3)tbZ+7vnky#6^Tk(QJUM0i!+FWH3uoqz|VDyf`jQBn<-OZ6%wbpd| zNyeb<({rg0VN|}C1da1ElD|wmKwK3EaRHo~`G9!WdPTfzy^41&|3Ua!=Ri;9e(BgL zPOM9uST~)RpF2FSNzd1W=ON+wy6}9%;dx7X9u}TQgy);&sr2yjQEl0ao5FgqwO-#6 zYj4%r+DL1wzBX1F426RH!l?df742*EP%v5%32%zDw8xqv;kuX}ZDXO;cPjI@L?dB6 z9OHdiJ^rPY^Qy@!5{kC!ZEXmwZ4b6I#kTUZqqBLfwvB(Iji`|8)^CmKaGuxR)Y4cV zY+bL%>hxHwDZIXo-Hj!9^8V2w-r(QsL*kK8NDnvitNsDE8~gsS=!!>mvF`lL0R8E9 z4-TR_I7M@8!ABnIPw%zYU8ZK7nJmP^-~%;j;(wnpI6dB#KbqI)_wwEXH~%L;nIA1k z=E((P_%VFXEA*=8=kTI}LLUW-cW_=?FjZ0c-24naP>`&o@Sh51z;U6X>}f9C*IcN; iRG16qhIwFKSQ0E5=7XicQenej_rQjK)LfW$sOCSEcT@@h diff --git a/Library/metadata/09/09db43b3b77bf744287ba587fea02f8b.info b/Library/metadata/09/09db43b3b77bf744287ba587fea02f8b.info index d33e5ad86acc6397bd3a565377cb300ca62554cc..aef98d6dc3a54556cd9e07305b9bf8c4855ed09a 100644 GIT binary patch delta 12984 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 GJU#(Az%iWw delta 327 zcmYjNy$%6E5dN0EJx6h;xr@$`NF?V(#A~3^NR*;dQPX&WZB$-C#1km4)kzeh@)%;x zunC*Y&gA=Fy;(r((DcJMOBh&%yO0*B=0NQVl2Eler`0y*4) zb)9(%))A@)UL=IxDZW=;WR+x2{q3fC(4-cpasoRSZYymW`3TPg7HRUCMFgwCI$uo^=u0# delta 15 Wcmcb_vXf`gr$2%@GHu6=#&K~lDd<(V_b7*HZ zxo!nH2>uEh`!}ZCk#{h52l}+J2909)uQlllNuzLqB!f52A&! zY}x(Lr-mCp*U=|iheomfv3_1}aLTQp`JQ6OTR-1!aLTQp??|~LXP}=)c0`fZD*9lkc<59IiUgg=;aM;77d zA#mo~L*%ixlgYP-Q=ZNLN5~<}H=ZNrKkaNKjLC}`JIo7{x24QEdW>ARQsx|OOSw5m zTQP{|sEkJ8dEt4S0576Htf|OTVW^@5D)K5`Rty-aa;oQ8E5*)gE@QqKOTR-r6<-1E4c7DHQk@aGq_PcR(FZG?ZY!P*z zwT|_jv11-HezuMjmhm$3iFv_zGqz^DBd_&I{BdH3^}U-N)_2R7+hKjTc9^g4!w&P6 zYdA6AW$Uc2?|aCzdEcq;**eSmZt~dND`V)>KEK(Vhpc`2#GHq$eO=%A4(lGoOr9&+ z?bLTi_Ji%#W9$`;yI0M63ynypzf`MHuw!q{M{xI^jSyGA-P$G16VLb!HC=&HMapaC zfC@veu7IY)qh8SRTXpG&&(FFiKNvc{?addT9p72rwJBm5##Zzv;?dLf&a!{K@Ut8- z#QE^^IQJ5MYbPImYv*sn{}I0{8=ij~{t4{=zY0IocQUb0-*!tc9@lQ^#p~UqX*Ruh zy)RGS!{~GW`g)K5>K|V3-R$#v?`EIZJ9(0()6MyI5UHStOg$W`K-cu<37zCmFSKe6 zrHgTf9Pt9*LrG>vnKiY7Kl5n(=~^tBpQUDm;Vd`I`~KwJz~E-4l3YY{(O42o$vbpc zWW@t39$4|f|I!14Q*Q-d|K{(z{Hj;|;iuvm-u=4dhQo&<ry%3yMVd?W@ ZNB^l4?0@xpna|$@*Aw2^>Bj7!KLO?(<1+vN diff --git a/Library/metadata/12/128449277d8f96b46a3816056eee4067.info b/Library/metadata/12/128449277d8f96b46a3816056eee4067.info deleted file mode 100644 index d4cff3313bf363bb70ae5507de26251104d9ef3d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 583 zcmZ8eT~EU>44io6Pmq7GZY$l#8)KTNgb*syctEJ~R=10kq*a_U_U~~L!B+g1yNm7f zy;}T|czPg0w*dzut~C(8fX3CW5E`T@u(L>L95~q;j|yQtFAAi#w+Ezvxnr;Q2BeA- z{#a2U|^vRaAB zbdjdZ>3m)->SeZ1Gng$VS#qBtVwz<0Anm}f5q#75%^~PrF&_F+?EzF?v2j^TwA?tE zE)!ovyN?Qp@=fFeRV!%z)~AD&oeQFHRlyQFI4Mg%J{eW8M@8{^x_pkWNbv-8x$au) z&|VFk`CS6J?oFj|+bi{(oj-Rl7^%PE|L`4H35FBkPWa934X6TZv}ib4PH+cG@{xV^ RewolRH+5Uay1N;TegO4(u=oG~ diff --git a/Library/metadata/1b/1bf3d2921db44a045acc548754a7c797 b/Library/metadata/1b/1bf3d2921db44a045acc548754a7c797 index a84823021f997ac0997f16372f5ed6d3a1eb681d..02a39ee94eb1ef5ec440fc385a3d4ff0c5038608 100644 GIT binary patch delta 346 zcmaKnKMnyw6vn?+r?@baVQ60#nfiMA(qe=zn#ND_(ZR25#VJRB;J|$zewM!uQyVp{ViU5O$ zE1;@YMPbzp&dx7^Siq|GZ8qeH2=1$knGz^ z@qbnuN8eWT-5;wtV|pmYl=ouLx9i*eKWFB;7ogtW?ITuGiprb{Rum0A346O%=HP2T GJU#(Az%iWw delta 327 zcmYjNy$%6E5dN0EJx6h;xr@$`NF?V(#A~3^NR*;dQPX&WZB$-C#1km4)kzeh@)%;x zunC*Y&gA=Fy;(r((DcJMOBh&%yO0*B=0NQVl2Eler`0y*4) zb)9(%))A@)UL=IxDZW=;WR+x2{q3fC(4-cpasoRSZYymW`3TPg7HRU7A6)QCI$uo_6`d# delta 15 Wcmcb@vYTas#m2z@j4Z-T3=9A+=mdKJ diff --git a/Library/metadata/1e/1edaba0e604d1244a9245cd9a8306816 b/Library/metadata/1e/1edaba0e604d1244a9245cd9a8306816 deleted file mode 100644 index 8a452f1b432cd6f211ff0e67a135ca4f24155a67..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12861 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 diff --git a/Library/metadata/1e/1edaba0e604d1244a9245cd9a8306816.info b/Library/metadata/1e/1edaba0e604d1244a9245cd9a8306816.info deleted file mode 100644 index 4e91a3b270d2c635f480c17c945a5778b96db795..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 649 zcmaJ<+fKqj5G6kP75fF!LLtDLK!{D$n3CXwG0o7OmQD83>~2N=-tDY{#Kd{qbLMj9 z%)VIs5O}iy;WH>)+%l#>=mJ}d4z&j_jP6m!bkDP`M^L+>Tp8`HkrM3_ zXlT$%V}6gli6!D*85bd+T4Vs_5i1GK nn*|C#LwgOfz#1*;3SGGQ4x|WY>3>fzhFa#jHf0RB84SJvK8MS- diff --git a/Library/metadata/38/386eb143d0a5a0947a0f4bad889c3e6f b/Library/metadata/38/386eb143d0a5a0947a0f4bad889c3e6f index 71ac74510314053fefc3ac3c8cf312d2612603e4..20ad05739a97b964112e9eca0fb5f1762823511c 100644 GIT binary patch delta 1276 zcmaJ>O-NKx6h3#He@2}odRavIlcm^{rBi0*SYtUQiCGZ@;fr~~i^o{wOk|sRZlbN- zcD89z(5fT~H!T7ewP{f;BNC!@LeL^``p&)2pONei=e={k?>pz6bMAX{zj3~~ohWV+ z)uoAO6MPqU>PjRN9b+A|R4$iA6@Y*rmvUJ~g4gPa1o`MIk=q22304Rq=>`qO3cBYb zcV3Vi0~7Gr7ar@QL>0MsE`?zskNp-b%3tBl(hdy@Azz2ihy41Pv#nnOJGNvz&?;C9a5ER{CithBJd5D_d6Z01aR) z%lMuZJSaM#Wn=wb;3CC&Lh1;%BZfO|Wn5W^hM~Oy<9(aPt3m1qL=hl6W4lWK%Cc{R zEIbpP-A^U>oP?{{4_|i`P;+_c=?*ZS;+O#OTpnS|dUWCGgEbXx9hAc{qy7-nSlk>B ziJRcCPB{g(iz%1cNJVT?&VoIx;+TzA4B&`d0NcGm>`{(2dp3wYwt@?K0)Gz1!#)nv z?dk8}t%sjr9E)EQKFs&vH$<1FNhRur0%f|<*j&Unt!U*OQll}xT+Ih+S8gOjZk@qSs9?9|n> Wa=niKg`m5XvoV?p(~&>pTmJ%$l=sd6 delta 1035 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 diff --git a/Library/metadata/43/4336b0f89b9f24808bfc781a1e52b6f0 b/Library/metadata/43/4336b0f89b9f24808bfc781a1e52b6f0 index 17a74166d74b4d82efbd0eb0940442c6cad6d938..0ef8683c00a9e9860d00b888b3167a01889bbbc9 100644 GIT binary patch delta 350 zcmaKnKMnyw6vn^VKQkk%SPjux5{X2XEhrs9siboQwW(ZS6mEe?oIv3MIuVI8D7G=) zFcDFhbu&QEW#vT~79P}rK^2LFj;q39Q6vc7k}sgwrM^_$-cu8@&eXrP zYppzphfw>!6h&N-~?`$aLH%Vy>SHB8iOF3`Jdnn7*!v^=o Skq{I33moFoO8G9e^dE0$c`)e! diff --git a/Library/metadata/43/4336b0f89b9f24808bfc781a1e52b6f0.info b/Library/metadata/43/4336b0f89b9f24808bfc781a1e52b6f0.info index 9bc86d2d28cc4d23305ffd05dc546b2988761245..ecd3a7a4594253d877e7fa30e9e0e9f10babe4cb 100644 GIT binary patch delta 36 rcmaFG(#$%+LZmpgC^Io9vnn+uEVZaOGe6Ht!FZ#wF%wHP69WSP^bQMb delta 15 WcmZo>eZ?}tVq>5l6N?iQ0|Njjr31MD diff --git a/Library/metadata/46/46fe9e0b23166454c8cb73040321d78c b/Library/metadata/46/46fe9e0b23166454c8cb73040321d78c index d2cafd83f760ffb1b2328c280d6d815f616c0514..64613129a993b7165422a5ef22825fc6457320c2 100644 GIT binary patch delta 358 zcmbR1JJVN(fq_4ffkAC10|SE~1A_pNVqh@UGt)CnGi3Pp|NnnRW}pBI3y}E#fAdF{ z2dvCM#^j4!af}R;4YBe!85)2_F>rts12H25!{h|G>^%mC24$!W8&q}z zw>TriB*xUuygb6p?8QJ)pt%z@4v?vg3==OPTPzQh2U*Mx zQMZZlEi(&9&tye@VND>-0OEi^2M{{|G0-rE2bJrABm=_g_1 z8JHOEF)%cU0fktA7$gl61&Ql1Gc?Ep`5aI=py=dzY~omSvEk6g4iVpM!~K?-g#~E- zMx6(&llj@=7#Sz$v589}?9sur2PzA4oifw~P0pc*J> z0n#AbSXlo5pX|UdqQVX2a059Y`3IHj!OBhm$*ZD}z$j(_DlFumFquWbfu-|8N;r^X z!N>$8lP71WiO5F*)#>Zo!hnKvenDkXW_m`6f{}rtiOytUL6gnif`6D<6o6o}hiDWF acY0A`K}KeBv15Se=CzW$c_yc;836zUBuKgd diff --git a/Library/metadata/46/46fe9e0b23166454c8cb73040321d78c.info b/Library/metadata/46/46fe9e0b23166454c8cb73040321d78c.info index c806381a6debc096e91b1c81d0e4392ccac796fa..cbf26130f7193628e5cbdf18979b4f48b54308c9 100644 GIT binary patch delta 36 rcmaFO(!x5yLZmpgC^Io9vnn+uEVZaOGe6Ht!FZ#w2@^{U69WSP^j`~b delta 15 WcmZo+ea$k#Vq>5_6N@tw0|Njj%mcju diff --git a/Library/metadata/49/49a86c1078ce4314b9c4224560e031b9 b/Library/metadata/49/49a86c1078ce4314b9c4224560e031b9 index 1fa42538cf093260906c068b3baf6050d30ddbb3..145d99ff10f6d6878e08ed28b31774104f07a45f 100644 GIT binary patch delta 410 zcmdn0`&UPYfq_4ffkCX6fq_Agfk6OBF)*0wndup(88ZC)|NlQDGf;qq1xWn=zxgA} z16F1rWAa6=I7Wua2HfJ33=E76ObmL=3=Ke|7&t(RftZnjVR8ao_8tR6gECZx4Jtc< zTbz+$5@YISULIj)_F|wY(A5btGWU|^cu$lpA90>8v$ z7J(PiK0pzDeOm}naLzBNEXqvJC{fTz)||{OXtLQ_a3bU82SN)OCwGW!m~1CnB{w8clbM>L=aX4nlA5P6`G#mPE+s*!x%p+O8k2*?j3(a^5STne GOcnrCvs!ro delta 511 zcmeyXvsG7g_1 z8JHOEF)%cU0fktA7$gl61&Ql1Gc?Ep`5aI=py=dzY~omSvEk6g4iVpM!~K?-g#~E- zMx6(&llj@=7#Sz$v589}?9sur2PzA4oifw~P0pc*J> z0Ma1aSXlo5pX|UdqQVX2a059Y`3IHjK@`IQApXh<35;R}pu$4_36og_UdT5B1@-l9 zVL-t-zo4=xGd-h3!N|bSOlLB?pvh)?!Cpp@g2bZ4++v0Nq^#8BlIU24#G>@#&1Zxb zGP0&6<`kz+&KB9kVxVV`Hd$JLwy%TjS_Fq-TuW&i*v0c)H9 diff --git a/Library/metadata/49/49a86c1078ce4314b9c4224560e031b9.info b/Library/metadata/49/49a86c1078ce4314b9c4224560e031b9.info index bd0d84c9085c989aa752da3170fb02292dd7b16b..af378a0051cf738e11d9a013e54ebe6b956c7057 100644 GIT binary patch delta 36 rcmaFF@|$IXg-CH~QD$OJW>soRSZYymW`3TPg7HRUZ6=mrCI$uo0(1+@ delta 15 Wcmey(@`z=E#l}E2CKf9u1_l5v-vk%{ diff --git a/Library/metadata/4f/4f35fa249b5008c44ac2998be6f82d4d b/Library/metadata/4f/4f35fa249b5008c44ac2998be6f82d4d index 042b434d4f8f9286d94612c412ce898776f2f302..e3b80c8b07430784181cf6ec02da16b7c18a0a8f 100644 GIT binary patch delta 474 zcmZWlu}T9$5Pf@hIWHiRn3zOFA%%q~!GH-^2!}<`!l+7zFCieI`D30-`kmax7Wp9aSljM1F0T>G&2)WDOF45{W89yC{hjy z&*LYGZfE+50&{1+e*E;h{BiKIb@fm=e;lXUHBP!4tbV2W6Xc%SM7qFG=%>b=OAO3$SX={LS9GRrIT;I@luyrF(N^B5Z`v1 BT`d3r delta 365 zcmdm@xJFTvfq~;61B1XC1_lOxAPuA#7)Z!e}a^pejYcDn-F6#Xu?<#V1#A zxJ|yuVPXO@83r1F3{YsWu>AiI5@QAtK+pihIzY??l;Z-*Z8qe*%r@D9Q*$zlz#JgW F0{}pUOcekC diff --git a/Library/metadata/4f/4f35fa249b5008c44ac2998be6f82d4d.info b/Library/metadata/4f/4f35fa249b5008c44ac2998be6f82d4d.info index 1dc93dab0452dff7f8e682fc97ee0431f9c13349..08dd1e3eca301121f3c2038d4ecd3eeece0878e2 100644 GIT binary patch delta 36 rcmcb_@|tCWg-CH~QD$OJW>soRSZYymW`3TPg7HRUX(kqDCI$uo{Z$K# delta 15 WcmaFOa*1Vv#l}D}CKfFw1_l5tZv)r> diff --git a/Library/metadata/58/5828f252c3c228f4b931f66c21e525c4 b/Library/metadata/58/5828f252c3c228f4b931f66c21e525c4 index 788fcba9e46b7c65e3d4056b6f41018e410c93fa..4693d46eb5e7452aaf7501e76f650d4197382843 100644 GIT binary patch delta 452 zcmYjLOG^S#6h7lj`AXCjC0ukf3I}q`&=4XBR6@!kqc)K_IX4}`2hIoyErd2LwYzH9 zrgf12pjFFUwh8}0i*~J=&Y(mGzH{z9-{an4^l^Cwz%2v#mH@yD;K2cql-8yAMI3$% z!{B&a2m&_47<>t%DIO1O=qPf)R-M5)01hl5@zBL6u$f{62f#{y><2)1al%Yb*q$@U z!5v2jt{ES1)o_cseX%$RG%bON#ry#V_8-t;rgG4K`~UDf^5(l2A`5vF zY{&cJcR5b7SG3&LX|A4CR6XBND7%?Wu{EE+l%ePCinQCPM8bzUm21a^v$R~JEjcf1 zmqgWwLYpmGmUXHSwN8%es@@?uhvjn*0v64SKJmi>UyWtZ*_AZZ(V z@Ziy8@7_Ec)4OLcn)Dwq{Rd1udJ?~3cY#*iWOwKLG4H+k_U*^pr*{*C#9k3HbxLqS z$T+?T$;bCPh)(=tzp*w z5R8x575vYx%TE4eDe}`F2q6CF33s0=!Nd(%jfS^!u-{-NWQ|(g&_U-CZ`Z*nOB-NS*ORPO-uHk^r)vXG|)n8eOXSaX)u+pw3N!k7=lv**jyWT(EOv0mRDkiO& zqr`aQbmSnVDG#xFOH|q`Sx9WOvWms=`)wF1Afymuv^qmcd9z&hc9>8C)&!?XjJm97 z7GQN2k9|`rJbV1&7oklvNsEfs1i6@# zSBtsTHc)6o-!4q&l;LP3TqLm2o1JjQMW=4D?ehj1G<1Zs!0L5S&k6<3G)vB+(>V-m zAv&d|DOYQ%jOM&h5W5M6N?WM0|NjlD+A#G diff --git a/Library/metadata/5b/5ba22c80948c94e44a82b9fd1b3abd0d b/Library/metadata/5b/5ba22c80948c94e44a82b9fd1b3abd0d index e5a2942bc77702cb215ae98da78ba3fb9afdc8bc..85615bae3260143918d530d6cff01d11e87a6651 100644 GIT binary patch delta 328 zcmexrJ<(c+fq_4ffkAd60|SE~1A_pNVqh@UGt)CnGi3Pp|NnnRW}pBI3y}E#fAdF{ z2dvCM#^j4!af}R;4YBe!85)2_F>rts12H25!{h|G>^%mC24$!W8&q}z zw>TriB*xUuygb6p?8QJ)pt%z@4v?vg3==OPTPzQh2U*Mx zQMZZlEi(&9&tye@VND>-0OEi^0}wj^G0-rE2bJrABm=_%Ail`Mz`!)wQDF9D7J)a? xen6hSzAXeOIOi8s7Gg_1 z8JHOEF)%cU0fktA7$gl61&Ql1Gc?Ep`5aI=py=dzY~omSvEk6g4iVpM!~K?-g#~E- zMx6(&llj@=7#Sz$v589}?9sur2PzA4oifw~P0pc*J> z0Ma1aSXlo5pX|UdqQVX2a059Y`3IHjK@`IQAU5TN1V%9fP+=kegvl%dZ{#=gFfi!r z+rof?bACZ(QD%BZiGq=Vp^469Zb6gH&Vt986qPg66hi$xLn7l%;|+MZI5~6j)AJQ< x6@pTW^Gl18Q;R1niCD5Kr{)x=PUaE`WK&MfOUX>z94+#PWAYsVk;yr-ssP6GPHO-F diff --git a/Library/metadata/5b/5ba22c80948c94e44a82b9fd1b3abd0d.info b/Library/metadata/5b/5ba22c80948c94e44a82b9fd1b3abd0d.info index ce986b70690a58058b702de211420025dcd31489..af56e031840b93996867594769511e2523c3a0dd 100644 GIT binary patch delta 46 zcmaFP(!e^wLaI2mC^Io9vnn+uEVZaOGe6Ht!I(<{2=XR3GKy{V7hz(FU}9hZ0Cd_7 Ai2wiq delta 15 WcmZo*ea5-6N^0)0|NjjFaxas diff --git a/Library/metadata/5f/5f32cd94baa94578a686d4b9d6b660f7 b/Library/metadata/5f/5f32cd94baa94578a686d4b9d6b660f7 index 8d8c1d6a44f3fecb386e89d0bb2187afe1592357..eb61548532b9e28f336d64c95c98d95e921d8bc8 100644 GIT binary patch delta 1460 zcmaJ>T}V_>5T3I?uIOs6+ODhVYL@+(x|L>zdHt)k!qTD=Q#4#*ZFObWih^o`UL&{Z z4@|Pas0Ry@z?UfNr5+5e9*QCgq8}*8x1eyFIrpw+S!bC&bH4dz&Nt`WdxuKL%5nj$ z=>U!~0I-m+&5BSCnv={0L#uJ_qtXj%T~$(=2f_5;vl zEW!nGi6kaJF0vhq&!aGlpIgjgEfNuPI!=ml51ZpB1@|H7x0TMSMfw0)G=rkzlZ1EE zk`6h%5G@Hdk&VuHn^=T(^K4Eo4MAoaz@dX+AFY^~GmRU;MFJ!E5)>9&)l!NIg|kfZ zj?#$1(w8wV%>;E+se_Ey%cpU*S`6{=XF{eov$`$BR*Du;RP8oqR<~<0MA2f7 zN>g(qI@ihEl7Hl`=Ulv)Xf7Qj#t0doUn!Z|gZk``YWN1mY4APsZ9FEQdn=Roso(@X z5aoCx(PpoZtQqEWjaey~RgzgPnH&FLe$bekB-16CHOv&7u_4J5R}!b?axU@`>|Ep<}yGGtuQ2f+l!D*jsIVwYZ5P7%|S& zI~h{=frLF#07LB1=>O>3sIU`F-;apQ!Iu@4j9n+}96K~_nj1FptkCNk;T?V7;b-hE zVMBN&)iL~Sey%~dF+J6e8&c~HuO1dO5Z-vk8nc*`Qy`7u7N zBqfoSyFFcPzC(e`9R#{F%e%Yj8;P#80-?uu^H*SkJ$Cq3+LR7YSsfXf#IJSt9P;`1 j@AS8J1=@Z7&Rw3sfmW~Qh}(}@){I5}r)YccwK{(RnsYE( delta 1446 zcmb7EO-NKx6h3$6y>T#`(fNBbW9pb`Q#q4n<}_uFKb4D2Y7;@)fM5tZ3gV(R4k6aU zKsoeB7!e7zFo=P0kq}Yj#-T+JLPRY>-9#=TTI6)jdvC_4)S?TAd++ys=jYyc&s%Jo zZQKLkP6L$A0)U;?-)V;Wa9y~*w-(kjnT(JK7$%#l?j98&zyzNFk{&{sF_SUMc-Rcd zGTK{pPQwL^n;`jGK(c^v*`PPZu^4b;oV*+^pdH`KJ*j>%W|kz%o%&_@C`&S}@Tb)6 z+o-LAdh!1cNp&PKrp;DLQwPS`R=W&47#bc( zd2MUL8`Hkk8l59f8R_e0%4r5{Haq2=>S|3mMFn=*6?vDsFE=?wCEl7O3BE|vpH~H3L$f5WSFsqv8n=P+S^*#6x-+K1#IF$1h zaFf=L$+)TpGVKUj13c652;(&P`Ei{uXw7vVW{@vdL@^{3oN(l$&tfY%s%kg%Z*_fR zPJfK`q6rHvN=a;sdP!F|=hQ8#x|P+U4SzWMFyZR74E2v(>Pz5DS3}gsQs{ghy~btn zdYX(odYB63{c_i>+sr+n^$b~-!+_g$A-f?Q)}K_(vv7qjm+R%;lO-+4)#)o~=7Ofp zLD+9H^lFv4cf=W!vztq^IfjIo)emR6pxQ#bKTFgiXhIDeA40Cla=56eB? zRLoN?i2)q&`>X-|SBm5Qv(lM#{2YGq$Fas^b?|Z6niH2f5Dn}tj^bQ#jWA)YXCKCW L+frpa)=hr^vy>9b diff --git a/Library/metadata/5f/5f32cd94baa94578a686d4b9d6b660f7.info b/Library/metadata/5f/5f32cd94baa94578a686d4b9d6b660f7.info index 74b22f1aae7b824e016c83a7db95be5bae2b9ff8..a7442037f6fde88379650ea23466ab982df486c9 100644 GIT binary patch delta 496 zcmeyhNNn>8i3t``#i>P^i8+~7sVQNpMa7xTna#tH$9PuMPg&15u*eyHJh6l z;~R0yK4?nEExX-~g)tG2^s-jQ7(CL9>`eF!Pw!xgZIs95ZiT$W+*B)t>D=ASQro5a zSgtfo-_gaKkJBgH)w-GU@Hl2N4@)v`>FEjltm4~w`dC77tJw}zlh7!otANYNU_-dV zGK)*WkyW%^u#e?V1DBztp{1FDxuvo3bjA**fa&WduyP`)n!bGk>wXq)5jF+@*L|gy delta 103 zcmV-t0GR)?s2KX97LYixQA+`{wE5T!FWY3Ik(-w+M^_ZGpFr4FqC=w+W8~Yk{|o5Cva>mw6Kg Jwggg<1ps}jCwTw> diff --git a/Library/metadata/64/64b48e8bdcc9e0541aa902936def9faa b/Library/metadata/64/64b48e8bdcc9e0541aa902936def9faa deleted file mode 100644 index e5987b31f340db3945f035e2596436d45c6f2f72..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4740 zcmcgwU2IfE6rM|W3seQc9|RPNMMT853$zsZ+tQX$`70n`G+1uiX}RR~?&j`YQj9VC zK=eg?(*!l~=fR-H2Yez%jR~SWpfM)Z@S-mo^~FTvi!q^o-^`u6JGYD47pIxbneU$Y zX6DS9b7m{V{I7*rct!{@Ux-`L2+`5HzO`dCC$3LTO*st!G8rMRv^&|$zhC-ePwRr? z+n>BPryY2&Bg8C@K-nln1^QE}QxU?!-&+l$^1dS~7>=H)j`#|?^U&vXX1oK5`nLh2 zKIdgI_)^HkSy>F;0-0ErAd0~sgiO4VAPU#B3;gRLbDgsZR+PSzgTzXF4qzuwyg_^i zY$?W&XD)G78^i(NCsEmNN^nP|pe2gzi;TK|@`(WYvIqwHb7UFJ&R`E+Q zeoqR&8sp1S_+*SPPvP(twXfzB{!@&vNa4T5_`NCouNbGjS0Ny&j~jeli*AcrD{G8xS8T*979 z=yTxr-683hgiA{uiVC4TC`X0w4a=Y;A3a@^A`64gUGc(ak1T9{uJ`*l&u;x;JeR#q_T6jQAMyHsOlUb*t%JhizkL zrgyEM6})D~&P?wbcLeRwjXu|@()%a;W?uu9-YdjyJ5HJ(v+qaEm<)%32f-@#a~8Lh~3jNb2Ybh+OZX!W_+`&H?^LVbI` zE!0OLUc29w1S`bt{qh_%Zts`rz21JA-s|mmb%JL^0W$Z?^{ez=;h3xnH)mo!mEQ9j z=lMPlocc`fdOeMnAFfUC*_IzNy|XxCwzXgSk>;6W`FUG{&$am5$&n{dlf|DSu4%D3GRp&A)iOhpfVn4KhbILLX3A2N1^{PEqw@? z_S{6ULfrPBhXL#L*#5JbxT<#A;Li_@YyQvCC;wKo_4v0@KhH5XzezX54`8H8OHj4= zuc1%=ZnX9IcThh+oxg{;sy2Ubj1Tx_JjeRSi-jlTsV`X=OXIYK7f zAC7>68E+tze!(5Va}O!eccallIIiA}rgKO}5mI7FfiiH1eCXoYq(D)-sQu-rSdPFG z3q`eH^_&_XJY15Yq8J}k33^9481bcgNLt7dH}qUQCmXP9A+Eo@>Lc2cGX0IuvTR28 zX)6}`&(o;Cr-51b!8Y%;!tuZ-D->Fz4Q=@X6wPLxrLYPKASR(Mu`r-2L;# zFJ7J3_r}Z3o4&dJ=Q}O}j(Sro0Mf;gG&Jes2V&s}V7#-#}(Xru1n zwDLI;@ZF#vOzi1rDs_4W4l7+OT>V6ipIJv-zbyL$FY;X9dkQ|mbwpuVX3_5Pg7O4f z?az9yS{}Ydlujq3i`Fx9k!N2akn_+gox_25N`@uZr>3pTFtQmpjb=Qfyr3l1rGV9+8pkI52W_+Alb^(@?ucmRMbI>thPJeu)Lrl>4pz22|Yb0@$@0rtCn8PWd%I1 zZ4cBCs*Jsa;Vg{iX_UlXaLxYCLF;^#vCvw2s^QRHv*=1uZ@kFY%&bH`bZn(Rdy8@? zk?XO_uJ|0kM#?&%$-7=EgX+#Oay5H$If$C$df@!;n67)DcBHQ6|L`3s0%6Z#C*j$S i7r?jJph8ihw&&adC)>FD8Qd~{WG)(6j4ybaOnw1|AGo;y diff --git a/Library/metadata/68/68a19ebe3f7a2b947b8c7720fbc82b59 b/Library/metadata/68/68a19ebe3f7a2b947b8c7720fbc82b59 index c6bdb37a8c836935877cc799fd6aa02ba22d3d42..71c8fb76ac00abe69a88c73b72f0d814d840f741 100644 GIT binary patch delta 346 zcmaKnzYak$6vn?^_qG*=Yauq5L?Yp0K;j{cMmBF?R*TsCAc#ba2CrZfVYrWARi`u} z22IYNp5K>#r%9AVbs&=l!URB$Dixp;cjNY?jfXLYrD)*$l#JQb&Vk_XUQ0PD0t_B5 zfT~&*g;g^^&t&0685SPYkwImN1dgs8^$@3^nlzOZ!qF?wZ}0NNMBuE_{M)KRvTrNJ z|5>daeOu9Yf2^jA>7f`?-iblqu5b7MoTcktfO>nkk62A9Dsw8>Q#ABE>}^|_gRlMY F_5{fwGMxYb delta 327 zcmYjNy$ZrG5dNZRYIU$K7B{OP2wD;8Yp9cp;OOY2vo3;rc3(lHi%;PuIEWzFw-Do< z25jJR$MxObLjiK@`vXcpGCxo&YI4k-#0u2mkqm7cm|y)60ydRrVy#qG;#M%IPOT6@;Y zgLnwF&#cfQlo@5&^LO~ct0pgX5fk2wZU3{QlHVkyF^v8c0OPzR@1ZPL4;$PUCyFiw Pe}O|>QYk&9mj2@d6A3VB diff --git a/Library/metadata/68/68a19ebe3f7a2b947b8c7720fbc82b59.info b/Library/metadata/68/68a19ebe3f7a2b947b8c7720fbc82b59.info index 3a8be2e12b20ec5d93597a4711322c4b9679d4a7..c8b74753484f9ca7cc914b6c7884f643f1b3f79c 100644 GIT binary patch delta 36 rcmcb`@|k6Vg-CH~QD$OJW>soRSZYymW`3TPg7HRUWhNGHCI$uo|J@6# delta 15 Wcmey&a*Jhx#l}E6CKe+m1_l5urvvx^ diff --git a/Library/metadata/6b/6bca9ccf900ccc84c887d783321d27e2 b/Library/metadata/6b/6bca9ccf900ccc84c887d783321d27e2 index 9abe9ed8da00882a8bc5811ce3b8219a3fa626bb..0e9ea379877c70c0196eecffabbd2272e726da70 100644 GIT binary patch delta 515 zcmYjLO=}Zj5T18;`?cwkgg}Et>y(y~m5_AB52TbD3Z4Wny?Cizw{O$69~(BCmQn(# zdJs>>IeO_okow+5@#0bcK zBL13|*3eA8Kqi0wGs_Y;X7ZYV6BQFE$FmzAD+ zcheH|^H!bQ=~?w=x@o8%b3IXX?1>}BMCP)D^ujAY#72XCgDts%Nre7>6mDSL-Alq< zi91oW-EC{llPC`4Q@@i`-9^VnMD=X`l|h%)RXTPbDS0P1O79oGs<(Gb<0C!Cc5FJ% Jm#NV7{sH8%cMJdk delta 5516 zcmb_g&2JmW6{l=PF|7(p5LIx=iRbDccQTS#D+OBWfi}7Hy|NkqE=(kX(DY z%j^d!RZ-Us(4JfDJ(pg3DT+Y%qWK4sV{b+NfEK;>RQLC0c1W(M*lke(EAGsjH}l@_ zea?RI;g_F{6>_=h$GP0nQVuV<+$;FWJ)ObSI36O?EX|vzb5Ad0d?uw~Hu-$w!Unm@Wd`S;V~~MQh9R1|w*G_*=35_-B-&6e3Y2)M1 zo+Uq;K6hmjgGmgC{>}a$=_mJRJija{FoGNwelq==Wc-!CU7oA2aA`$|5Q9|i zk1!||aPGBh>|tQLO~x7hID!Q&?u$C}8jZm6g>YFdYBYq;LXY{vt;zAr3#l^Y9I z7Y!acACz~X?W%biF_J-NeOOR$dcp+lSA z&7^nk-Iy)1vRP`tD0yu=-|oVuY)4}EKg13$meZ<-2>ggOTp;+rab-wyB@aKJIa66k3@z zW>4aVl|2flEUhJC2@a^OQEEncECE6zJES^-s@|k1sVwpK)V6jO-=g& z(cU}!Xtqco;4iD8)V?^PHfb$q)T{l5EeOi-$vwmWp21K@25HsV|6hyJOmCEJy}SJ&6+O zR!6vxb{G$WsEz#8a6D-c*6}F*Vn5BElpw=^aijsqb_Luzavc!_%tOxcdv<{A+7XuB zutnXJCLq_hJje5^9geJnI41vp`|Z)7LH6v5%Fxn9)Fs6jBS)?AcAFOvIV*ZrPa;}| z=a!<-Q|hNx%Y5h}cbW*}0jFX04^s9xltoMDpNs{t+1WhkbI8&Hsq*&|bAZEcB%7Bn zCGVd9=NX759wAvLrJ2{0Gc)T&iaV;0nUKuqY04BXuQ^EFh!K=Zv5@?D=AHMb2)^~A zDmYpMkHVRyQ{%L4@|AHVrkB*ae>s8aVqb5Fttm zty$UYaJO#IZZsr?hATHi_M;pnRMAC2-sHg(EGR7?r9e0oelj9!dl5Wdu0Yd62glSOnP>`H zUeo8D7Fr)|XktX-P^DKM34b3F_qb!IqfnqxgtA~7(LKA&45m=qQ8 zZFAI0B<0KmrQaU+>nFzIaG|@y%0p)EXYmiXPo^(0wW+?P%f>;Z)smngU+5&sRDh<(xN+n6IZ4lTz8DI+)X7Vd@TK%xiLAb7_G7 z!pyYRN~M&eKV1CP*fcvJ@GP;xgAno@{q~K=r!G(kTBeNaVS$o=ym@|7%}X3ybnmsFd$tM{rTzpfzs)BbF8A?H%>ig?U zQxkceKMTocb6?8{&cyW#jim$La!`?09o`IJ6?I^xKV{xSje^rj!22A?VVLWOH(V_4 z=Z|dUllN)1WAPpOk;rU2Os}HHhdAZT0xF#qV6lx}oT$pV<@O86AB`+E%Zrq=Wmyhd zeb22Z`LTm6CP(+K%$xy$|H++dw3^5~qAznQSHQO&hi*XXPS^G9I@@x$eWAz(C58h+ zM!Nzg0O0XTXJ{`_Y~};6V-%={z#;)9ppsHoOGNp0Fb15a$ zRSTotWt%QuKh>40%j5q?ocCjRkd>dSggzcP#6}MyHGJd~nK$!m8)&=J8CXhti%Ml0 zQZEQk!nDtL;#R7I0RF>!#je_Dz0I4#Q1ANg7Wh^%+d1N*8iW}$KF?NC3Tbe8zmgHM zzN}oET!46E`cRM>TI|ESVZKK@EBnI4v%4W0@;H4(p{j^H%$l8u!S=Fv;6B~+{3i@S zf~tbMIhQEaq8f@Wy3bJFa6=E5--f#E64 zLQmWN1=yu%$bzFwvW`$QM(dV(ojl8s9wv3r+pFAc4tJC$wR+l37a1HC9HcLzXB(zK zE9u*NX?4cjhR5q$)MlkqgRNBymf0H;ZR2WVl$69^zl%>+u7Q{P50{p!{b>kL@jSmi zZ5V6N>{A0|NjjR|ByC diff --git a/Library/metadata/6e/6ec40637fcf97bb4094e5db6edfe344d b/Library/metadata/6e/6ec40637fcf97bb4094e5db6edfe344d index a3fa19c1bf974fc0ad3fa7a4287007cd16884b33..3ad9ab25b3868adc1e921609182bc44d741ed105 100644 GIT binary patch delta 558 zcmbQEctlZ$fq_$%fkEI10|SE~kOoo=45oT!dWLC+4FCTB|If$-6kuTi694~i)O^4y z0i<&b{0h!rb^4ZlIb_u_)BbakK-s3ra%`SJ1|tI#!#xIu25pcwAZ7+)Mh1q-4Q%3I zSw@C7CWeM1j0_DtKp9r3>;|YT6N4TzLxTxWlmm#_p|TIy#26bUe`oWP176^mHg@D404j^%6uv?{pdO&U! z28n|)GeaOyZ59xN_#$v|h)uabKFAzVAdP0e8Q20bkOl`#3&cU$+I~uHK6K&6d3eCX;7eozyu%$1s3CGLC))JlUW1=Y(QMc;^Nej zVto()5O00gip1Q4oKywp{JfIXyb`cryh~PmQD$O}UT$K^iBr+xlLa{~ RCT9p}h=4o?0zk9i006A5bF}~f delta 402 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 delta 16950 zcmV((K;XZ^hyjL(0gx?!d8}R6b)WCO?>+KyCPh)CNRgB%iPU7uwgyYKV>@;{!p&gE zZQ?X;0yxbdZIU)XTQm(&6etj&1^P#TrcE0JNZO=`GuVj>$D`sgmTZmGK#3CPnd1C7 zyz$2h4o$&vbjezH3(WFTSSN>lH}6_kcPucRHOJ{r$tIXY|h+>>n6t z_qF>v9ft54zU8fd-PHPr4t0*c*z0y@JpHXJ3G?}7|7ba&@5VdZ*IwVZZhcFnTdi() zyw@8&bsA8+AevWqqB}9s?TwF*o*o%Faq`Z0-!(EeJ~lo<3FwlIO-!`9J%)GZ&*@#e zvfG^)UVCS|+wI@Jv2$Qod(U&{2jq?J`H^ry|GR&(y?9xFXVDU{o9Ok%hDX5?A57sc zsNz1+n&^Tx0ONq}_!uYnslTsd?05SCoPoHZzt;tQoCs};datL?=w18P*4jJA$3N0K z@?z`ozWyg3c%$)tnY=6MfX)y1!z4htV z{+;dJ&%O+qH>lytI6&xczqhquG0>1cf^(9$F)#XOhkx7H1@|sNE@kFH5oB%Xv6b#} zMI-)r3ea65NI{%*+r2jbTQtH%H!%<|anjeHRJQhi&fZOL=^nbf{oKRtU01*jZ?psY z-}&+Ojc+mH&EqBv5jSH1ov});063EdBqR{qr6GflWGWE&Z9QW6yBTtMhQ{rYr(n+j zs{CuW`fz0j57OUtn-oGCx_Agj;3*=Y+v&UJ+V0|yjgNo0z4^($H#RT5aSmu-e@ExG zds_>CuO{RHu)#I&fS7l3yRedLATU&IbuH!P41i8&bo;U!%`)A1fbiFA<%7%y>K*2Q zZs~QL2$>VO4vubE<($;j8_;7ousy)cSohZMlI5+94|m?Er1VBOpmW1p+PB`*tAsN? z4w^x=ae|-*Ztx??j3;&A5T-@bo)lz0X_7vFlY>Elk{nZW07tk%)dv(SUL|nMbOK@> z0{m`a^^2@qtv-9H(&mhDCGU1v8{YM??xDNd8y|iH_Diq313K^cSZmGg7{+31)WzTe z4-8#wDW(ih?9R(7$s?dkV#eyCt6)iDf}(ez%_Q+Oxx}0kR^@}n9g{90;qVxd+WxaQPth;$-=drKL?sY4#qXWn}ty}JHEnIB+z}i4v z*b#W{X#yVjaVl^etxP(h@r`tSu^%R&ANtmecAL3^OF2)c2vW|@MU&9GFbK3>hJ}eO z>o%E*X<#Fx@Qq$%Vs!d&GZ)v+i<{Sfw-zt!J^MPY&##*UR^QgS|04uyvxzi=vxx^@ z{UC@YXY5TF7S?(~h>F0B&yY}#LD22t2BD#~*WyZ`KTzrtaBqR79<8uvRQUtqiAfhp z*KYT$FFDT^!K&(O;T>n0M6# zAX!Z7qzgb46wr?ofU?0o&Sw_Ff1e#FCLpjatQFI1M$J;a5+&dZD`?F-xhn}sH5f+(ZJuPVO#-&CJUpCKQ^<6C3}aF$^Pxt2f( zv6pr3k2>D!>+frkSFgL}^57LNm(KyKZfo5u`rNVMu7UVx#}XHaD|qOdis4B�NRl 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 Nvl2rr0R$5Q002Imf3*Mr diff --git a/Library/metadata/73/7312850033767144bb8b56eac9e62164 b/Library/metadata/73/7312850033767144bb8b56eac9e62164 index 385e53ba322c033da83f7dd3275cd2e34798f608..4d90b4b7e8af319718346456047a01db0834b2b9 100644 GIT binary patch delta 350 zcmaKnzYak$6vn^aKW*h2u7%iK5{X1E21buyG_rXEvrZ<1qz{5f%m%Mu6OoAFK7du7 z(uf!|`OZ1%?@PbaEXk545aob415lt&4d|x5v@_}8VT@ruT?7FYV>XRbDENEUQjW?1 zgNHMq>efZFZU*R?EWIeh+=DtWs63I-(UqefQXi^Cw~{0rz3}4pE{{xvE-J^rqiSUP zj#B(z)Y{Q^6n*z6YRZ@%iZRul81(J>cK^>=xakFGUXtu1)>BEUoEr9|2Fcqd(KXQR JDAqxIdjgXJGFkut delta 327 zcmYjNy$%6E5dPNfEk|*uxr@$`NF;J1;x$ldBv&d`)HFJUWP7h5;src`PNEPM#l3@A zGi<^pvoraAW@a~wv$zSALLkTh_>?IDy`-D;CLO$tF~T80N?_l*y3(aWUkYhOKp=-3 zu&gsr!8$_qz>9>?TgCUni>xwnuxyc{K#{k~oj2Fx{7}z|fq-5W`%-axU!`Q7s()+S zT6qu;q4s|(GzeuzS@!f9zVpJvQ=P?#H)GrHtf}NTNofqDUj?wCnz!UVl;x^%jr-zA SLB9q50++Z$xpbFW29Gx-c`%6p diff --git a/Library/metadata/73/7312850033767144bb8b56eac9e62164.info b/Library/metadata/73/7312850033767144bb8b56eac9e62164.info index 8eaa8e79c0601a52fbca42d46bf0388f37adefe8..c15414e73f06f08a5f8ebbc60fa2229082e7af8c 100644 GIT binary patch delta 36 rcmaFr^3P?0g-CH~QD$OJW>soRSZYymW`3TPg7HRUJtdYfB?bln6^9I$ delta 15 Wcmez8^3-L5#l}EQB^FyH1_l5%^aSJp diff --git a/Library/metadata/73/7314d480a23bf4049a0a7aecc9c92ca2 b/Library/metadata/73/7314d480a23bf4049a0a7aecc9c92ca2 index 9b4f1e930683d8d09f21f392d79ed7014c025e29..f2c3eaca23e920e07ba2ab8c4b9f35e9fa44fb7b 100644 GIT binary patch delta 570 zcmah@PfG$p6o2b(e^@Km0xc*U&_hC)1w|l1p+Zp9!K6cAZZ^h{?k?>V{Xr=D0_k+< z*rjujpP*}}xV>+fYDU|2m)w$0W2gI6LaM` z_;nmdk`Yi8Y>w0XQCfX64&q%cNFb8_@C1MaK1j%Lg;6l*im@aBQS7o`09R3u>G#-M ze^`QsM4Q7yWAcEFDCXAV1uxLGgglG80S49|(BY;^P=D+FID)+U@jyrSEPcx>uBY?t z4A}3y$)n&N-z!)c4XyJh>;Ruw3<00G4%~>_z_?H}EuKPj)wU_OXV zk~R%a4c-R#GPG)nh!$4Z>+TNPmju^}7@=%VqTThiB^hcTannlcReG%FO2^FNAIP8B z%s3=@gYomMamWmsQdR3@zrsqSRMBmlbOS^p7)`5}D#7C^$`w=RB*!i&Stj$zWI5H# oo|^1{Z0MZktpn`S@iuuW8o{Lz*V7T#)S8N0hsb~1iowyTKciZLVE_OC delta 589 zcmZ{g&q~8U5XL7qrjihvv}#ch16EL|u~iBMD_DysJqWdU5Q_bi)<~LEHx+9U`Ur)+ zdlS5g^y1a42OmLt7hl0RYa$-hA(P$wzL}jb`;@p%ECWPN0iuh58vq3tfQ-JbXBuhv z@H~$TAt0F45X)%}I2eOhfc`Wh9+Sz8GOmZ9KabxNfrgac2=PCa7nY)F+K`@8D2yr|iCmF-ta4dA-o5q?TE^%ekc;53E zVmb@Pw=gBtq(B>W?~wpJVzxN{ZU}fDJ&Oz|uPD+S3VA{dm#k7wjnRFDM;qqz(IJ*( z=|DN=V^~7f=;ZbrZaT!Yn_9^>-R_RvG;L!;7JXLi64z+y1;?_Cnrk{XK}i}B$WW7f63iffeGb$l-^`?x35 oJ2k7a`k?Sy7V$yPQ{R5$v%s9QpKDdE?nsoRSZYymW`3TPf-#o@5acE1rdla@_=kAMyQJpkPi|xs sn;5c34kV!OT9KGrkdvz5oS#>cnpdKatV(#YGGiPkvdANr4kiW$0Cg)R6951J delta 32 ocmdnM`kZBg1zTQXZmN~S#Dq(e0~iY@CWuXbz<7qmo{5100LKms4gdfE diff --git a/Library/metadata/73/739bbd9f364b4268874f9fd86ab3beef b/Library/metadata/73/739bbd9f364b4268874f9fd86ab3beef index a02999b01b313084c1bb9046e2530a8715c96165..b2feb3563c85804a5bc3810563a9d48160d210b3 100644 GIT binary patch delta 1315 zcmZ`&OHWf#5T4TqC8fo--1fGDP~{~^N~;2jK`#PY)Tls=5(1&nqSf-S_+q2=7f2l! zCb*D9O-xuxjBJb&H@Y!YU6^PHE8~U*YYlbg-cmu~G}ANleczlrGxyxDzUe>>fb$%H zdl~@j2q>2z8c2r%+rI*loFp8)jd$sPa!I`HWsK_@^i8A}8J_Gj5e zfJAAA$;q&jd9r}}B5J530Efi|9Jbhmz}uG7CWH2r*%iZgCGG;|k{(fqQ;LA?pKNv1c!{iT^9!hXG>uXW85h-PU1<*m`2MZp|CI zZNMb42bfh&%U!GUpqksbMeZTa#fJ_{(^FE+k@5VR$h01G>XYU(_+iFr@q6aC@qv8q z?TGq56-?2EXvVt^*>hA?{Z)R+C|guztEy~MmB;>3{>UhgtID9NY-go7f!zgBYy0?_ z8KklIv+T1`x&s4ZO0EZPKa zWEJxYE_93ZNG zL1bSfq6qvYys16WmT140q}4*9piBT$Fm9{3oK&PJK;Mb-F+f5YFhK=R7?iKW+R_|Q zerVbM*;TU5u2K)54^{p)OcU|v6M=6*GYD_4d1LxLI>qMn&A_)$U);4heQ}pg&!NgR zXH=L2Mm5i>0Y$v5&ctg`#mKLB_jfK%e17(0A=`P%?(RdrKXa)LzGPJ?#S@ktU!O%{ zYcZOY3GUS`=wf)uvJoLvIW~W~Y(-T&-dtCp9EK8~qOgk#0Xw%FE6NLNxL;xirjE); znv+NHx&Y;GLM6Kz1k4L=Qa`j0G%oo)JgAcJ#6;f+SUI9E@x|XKIMI+x3_>gk0MLGq z0B+Ja{1B2zAe=2IWK)m^;N8Je^i42wJY3qF#gco%^{APzgkw3O6_xs$kWqTEEMF5X zYj~NjiB^f>NSu(b2{h@}Ao#`}4z1x<&P`Bkq78(X*q`9AY;d+FXcycye}W@xxT1UT zpTJC52h1CWcdwokZjcb2Lg10(B%kdye3|M|IRvVU4=P)AbBkf~a(TF16d$yr$5kA2 z6~{#pcicGZv6i(m**~2jdbLs9HOtCy>n84_^)8{ zQprf@cHMeC~K zSPo^=(=(~jslL(l^!Oy#*EC>OTZwa-t0QAK#xtX1lYBS2hd+`&bv(*sT=-4HRGh0DRT>bpQYW diff --git a/Library/metadata/73/739bbd9f364b4268874f9fd86ab3beef.info b/Library/metadata/73/739bbd9f364b4268874f9fd86ab3beef.info index 215c5c8c392fe038246825336ee91fbd46c23079..74e70e4cd60f8068f94caa928df45bfcfff9ac61 100644 GIT binary patch delta 211 zcmdnm&UChmWrBrNacWU!VoqjNYD!pYQE_H|o|S?zmjV#vP2S%mzcE6eQ6IOG#N1RX z1?R+^oTS9$Y}bm^@XX@bSZKz~M&yu{p8D}~U!%#upSlw#ME%#!?~&DPBi8@P21ElkZVjSUS< XOee2zir_<4Grg6C@d!(AGXnzvh=?33 diff --git a/Library/metadata/73/73a0556bda803bf4e898751dcfcf21a8 b/Library/metadata/73/73a0556bda803bf4e898751dcfcf21a8 index 193d77ee562bdd7eed11f7015c6ea449dc4800df..2c12bebf439f38283e65d7c99dad04651a4ff637 100644 GIT binary patch delta 462 zcmYjNPfG$(5TEC6>1wk6SyKsYH3S!8ZKJw`6oj{KL5B{Kg_^Lqp(~4Y$O!5d+Pik> z8w4#u-SQh4T`T+mb?6JU%}db+X6C*5{h7ym&-e0+0Adj!)dPSaKmZ%Ss=B6XWet8D z#~~aJcpi)6*x&qMio*ka@fHZsC0{fSK)?km2W_+h4Anc6?C+ z*Q8|oXTqGjfm8JDDut0Dlgy4J>;-7py+s9cCD85vUp$XETkIb4?#UO&GYw6OVFf#| z3yU`9CMKG}pmm28;2D#I09^D;Jf|HoM)|>eb4TDQ6B9Dh5~V zji5!iWmU7ELVF~3U>LewG0fdky-_u4a!xK6^+su(3eqKgkhZnt1XTQ9K{#PWsFvl7 xWm#iYPOdd|{f|Jeq%@63E+nK)v}kPBnExfq_4ZfkEjm1CYVMAONHo7)g_1 z8JHOEF)%cU0fktA7$gl61&Ql1Gc?Ep`5aI=py=dzY~omSvEk6g4iVpM!~K?-g#~E- zMx6(&llj@=7#Sz$v589}?9sur2PzA4oifw~P0pc*J> z0Ma1aSXlo5pX|UdqQVX2a059Y`3IHjK@`IQAeI$^1V%9fP+=kegvl%dZ{%kQGBD`t z+rof?bACZ(QD%BZiGq=Vp{dSfZb6gH&Vt2^%!Yafn|BIDF-|rWshw;nsyumvh#yyZ zd3jiBQE_H|-sIn6(vuTKD>r`>E#y#D&P-DX_45pgj5m!p;N{}vEK4j>$jML7SFlwG wN-fSWElN%;o?Ihm$*P>1Q=B?EK`xX{IW;dOGi~!`xvR{RZwrV{o};7+01ZB1)&Kwi diff --git a/Library/metadata/73/73a0556bda803bf4e898751dcfcf21a8.info b/Library/metadata/73/73a0556bda803bf4e898751dcfcf21a8.info index eddbc4d823f529b28a8777b0474a61249ed7780c..33a23e5024efe7c2dc7020787ab4967e57e93f71 100644 GIT binary patch delta 46 zcmaFP(!e^wLaI2mC^Io9vnn+uEVZaOGe6Ht!I(<{2=XR3GKy{V7hz(FU}9hZ0Cd_7 Ai2wiq delta 15 WcmZo*ea5-6N^0)0|NjjFaxas diff --git a/Library/metadata/73/73d5d79effb76f84491567f3c473b810 b/Library/metadata/73/73d5d79effb76f84491567f3c473b810 deleted file mode 100644 index eb82b7c5bc5bf221425aa4debaaaf5d673dc8720..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4524 zcmchbU2IfE6vxkPcMH@H1V0c^pn`~qZ5QYV^3g4ANvnLcAdqOVT)MaAn(f`q?p*}G zavzL7C_bqP@j>H*!Kg9#WQ-aUM0qgAm^6kLeUTVmOf@=gXVR`U74PL{k;ega#L zG1RkwT-8Py0e=#e{pN%_at5;7(5H?YP+5!}2GORT8wpX&dLBcY^WH=lkvCZDp`Gfj z2d4#DR(n0Pspi_w6X=sILS-@bF?L?8al(zA`JTnd8#~{oal(zAZ%?=*C(wQ#mGj<_ z@CJDs_Bo9{*SDmGzY+60Yxr9+Us}V@#(Y@~KNoZEgN5toyq~JJ$X$w7`T3aNUBkbP z`HC7o74wxf9KNFVwW@~y8uOMK{(H>tso{Ucoc3lh>rcaIwA&g*t9)V1@2%lWW4<=w zj!eN0tHJ4S_mM|RkL7Rc5^nqd{p2Y0H{K)qKlQ99jL1`#9{Pp$+q89$Hjt~Dw(ik` z3D@^%J%o6VT2WbeUw9w8!BgnBDJs%iE_>k~FLe9e(3OdbpOYL~kGCJu&rJN>7(X{1 zk)j(O-|J3#68e)~U&(VrFDHePKj8;%zVEmjOnA_l5G86}54$BV2xZVMAJ1&;PGtIh zj0xq~sn9EPYTdxxx`D}c1GDSKX4B{}jZV|(GL3H2*kT%)s_H~{CQ+VAv}Y3a8R*Zu z$Gm)5Tw3ZtSSWe>y>ZF=V_s199z9j`Bn^WuXnFPPhZnDUssHD9PH+EZ%@pIsBg*dD z&~u6JjAc`Z`;2vr?>syDG0)G$k;WOk75+rO;Cb_GwY(!QHc0eUtcUTvo*u?`!)NMY zd^dXNukS+-{grb#5#QNyR>k)$x$XDW_-@Bp#&_+k=i=H{xUoqmbMM#d>rn;$q?u27lIu!Il9Zw zdqe$b48!GBV~Jh6 zPU)RXzuxgPO!0_okDu3kF2`^5)E>Xl^M4*cLV1Mi@vq0P-D39fW2id*m2h_xR%t^m zpHkuWP4wtqOsSfut#Hfhs@#%L?%=E71 z)52?J?9BA8xg)egFZx`kO7CCtoqY{ddXLC$J53H?v-LB)*VEsba7SK8`z&e-mGMCPiB5axV%|-TLjPe}`V4K_a|>Za zZu`$ezu}})V(i{@p&{!eZ;}((N22Ofol@OV5UnvI_ z%y`2kFJEwT_}oKE%)8-up){$!8%^hc7lufQWd*&!J(h&SCgrl0w9 z@U@W>J-fSJc3L2!wp(t~mMXWM?Cxx)<4Yv1re^~A!}Pt^D`>yVqTcte37`flET8a_dtVX5LZ;JNRBAgYNR_JdsE psj?c6cI@9(y_^$k;1ufL6_Dvv@dljdYv!l!y@kLtXO6Bae*-jM{4oFk diff --git a/Library/metadata/73/73d5d79effb76f84491567f3c473b810.info b/Library/metadata/73/73d5d79effb76f84491567f3c473b810.info deleted file mode 100644 index 84c7d7c1578b80c3fcea8a71c2f9cbb885b538b1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 595 zcmZ8f%WA_g5DY!`D|9by;y8ZZnubtADItgSP>NYwD@P#9Mw0XR`^pl{qq=Ekw7WB_ zjlu)RrS;`ax!y*5&7cO>~Dd0tdCYU^dSj#RN1LC%RU=H%{adCRU>E;ZwcffA|g*2WgjKE8)qO imms#tP@$|*+hy)RaGUq|55{3!$wIQO^yleeGWiAB?zP4M diff --git a/Library/metadata/76/7687f525efe9f4b449dfe5a7fe0b7c8e b/Library/metadata/76/7687f525efe9f4b449dfe5a7fe0b7c8e deleted file mode 100644 index da5f0b9c355613c57ab959eed1392c459930557a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11478 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 diff --git a/Library/metadata/76/7687f525efe9f4b449dfe5a7fe0b7c8e.info b/Library/metadata/76/7687f525efe9f4b449dfe5a7fe0b7c8e.info deleted file mode 100644 index 348846be41d095861c02e77edfc8d595b7b4054d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 639 zcmY*X%WA_g5DY!`EA$18Tbw${Ee}Err4$#ELn&r$t!#lL8%b`OzpoyRlj!D|+1=S$ ze`x&Scv=~Qb_*6J?ybS#J4jqU5+Z@C0(*@Hl?BT?mgQUgij*6SHkW;;E$Y$7bCP7PE|BX%QGvTbh|A6WbwVDIimrn3 tJNy8egK`IR6#lyQ3Pj5n~~ zb587d>iW!X@PZ{o3%@|wC`1hXN!f^nu<-Y8tB60aM2yeT($x}QLHACy*`5C0f<*nh z!KlxESu|e=nVgkH^QDlcOJ z*g||mJG01TZ52b{PouKko^nf^h3;0gY2!9j7VU@KkZI?3LKHooCn2-nI|yU)7Gpg0 zQ?v14wV=ytj)y)~T={tvZL&G2EZRTX&vO+{x%M;PvuJ(o=X(@Rx%TtDDYwM4ke^3o zzxSoQMZ5+7oI#u8o7cc!OZfc_{LO^VZ{X(=zMz3$NI2)g!tt};52Y-`1CrMHrG!7& zz`soRq6R*Z@Wl-ru_EWy(ZGL7_>ue|+>HN6$x#?@+((Rm+F3~$lV=P&j0+XFSz{lqCYLp9 z?4va)SNmusl(>&NQCYZOxF37LGiY~7DnwrxI?-MyvI}-(i_w}}5+z7SyN{`7E_tp^ zp6iZ@svV6zVV4~dxn-w6aO}t_iAvy(y1wo8kJ4vRq?EG+;Y3B@M<%TTc&pvrfo)eF}*9E5uc*pc5D%bZauxLV_W-~ z>0Rk(1-F^@Gt;}`mY^T{(B?R0djE{?%xxgkdrWTnp`PAb#Z*7Y^e**HKgjehx#*-Q|G&kFeW$W%XLuPoG;URv-vW;H=FN@lxIW*GUvvTgtgfDekf~sNv zI@+|~hi5bUJE@<)*?vE{tfu`!!i!!F*RjEJwGu>5FpUH^I9&1f+EpaDfz!@#EkY*T z7nERv8Lt>PUd1lqx`&kL+0jTPD9d}JZX9r;2q`g?(DCh)9&~YSl2A+?)V^9&twpet z2vs>?d7UaBKNLEFG*Lb-6ZFoSU-BGzku=C*J8*4WCtERVA#S|4{1f_;GUJWcvTR1R z=_?k-&s9|ZB+n%8)YpJex`+q!`GVvfn*Ugsb8l6cgZ!HBMx7%8uFIz?!83;HmGi59 zdHrZ%?4vdB{OO0=zAxi#|K_e@P#J}O2QMFC*CBjA-jV!Ep-bISy67AACcUmCnu*3i z+@{0*HQ#pv{Y}G2I!m61{)VodIARRyKWxy?tbP7?+6(U=YEn9$)lb{xdUn|MYR({B y;M$)19AXJeBch<@FpnQ`{Zi#rD6iyw)oMtiTxa&tUpyrLb%DMp%4;;=>+&~-@fLgl diff --git a/Library/metadata/7c/7cbab2be89b54486bbd23a6fe637d30e.info b/Library/metadata/7c/7cbab2be89b54486bbd23a6fe637d30e.info deleted file mode 100644 index 34e8c734e5446d516eeb6f834fbce1f00da881ad..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 567 zcmZ8e%TB{E5UeaBfyP8Q zH0VaoN-}RK(3Ik0N%PrkQBca#42l+uY|gSN2I&BPjPMkF1EOMXP2O_UCAm+MG|97N zz9@p=wAhmXW2$vYl4-gOR4br64Qd+A2OC5oMQ^XKB6QM^PlpPiC``;r)-UlFDc1pQ zC5K*H)E5nNpJ5f_QM3rO0|6*>+WVU`2{QvtPcPH diff --git a/Library/metadata/7f/7f38d614fcfa3b541bde2acda92af7ca b/Library/metadata/7f/7f38d614fcfa3b541bde2acda92af7ca deleted file mode 100644 index 12b29c2b74908db752173d3d082b53011ee0bd88..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11678 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 b_Kfw6_v6MdcFai6@L(T*CO$%Nv)jJ`iOMdl diff --git a/Library/metadata/7f/7f38d614fcfa3b541bde2acda92af7ca.info b/Library/metadata/7f/7f38d614fcfa3b541bde2acda92af7ca.info deleted file mode 100644 index 924e83ac570c80e8a81a514ac4b39c960749be58..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 633 zcmY*X%TB{E5Ue=z75)PHgqGY$tBObnL6FJ;p=cAY6H9(XwnORP;|C4Yx6I7$&d%n= z;1|c^gSF^(;9%lk4i=w5Vs=f41g=W#4O&zV9M>wKgs8xiH-{h(Wt9u=_Ja43a@`D~ii-Lf>bLzVPz$5auyO5Onn4cWlKNXkIBB9>qA6B_jj{>bta2(JM zoMvRrmK%CEU$KV4vc6r-Yl;hKDBLfAts98a9)gXyzMcNAGcD2T!8AA`@ diff --git a/Library/metadata/7f/7fae0ddab09ac324c85494471274d6a4 b/Library/metadata/7f/7fae0ddab09ac324c85494471274d6a4 index 95064916413266723bf24ec6df04a0b45b7b62cb..bdf95da25ffe5e498e707ec9d411c8e72fc4dd18 100644 GIT binary patch delta 1832 zcmbVL-%Aux6u#rG*=VAsxw(pth_IVBYN^4>LjFPo(Qs9YNFCR^>&5lXGBawcg+3J$ zm3AM3dg%`cq6Q=)s6Rl$pvMSohq-s=p6{IRe)rsSUf&bemKqT% zQV$is6G$o7^t9#9GjwbUH0~z~J@5luny_-kn?z{IJjY;{syM1-=S|1eAkh z4_XB(becQE5D;RM`{*}>R_ko!l#Q+z_yqJsz-Hl@Qcs=^R^Z(Tj@yJhq}&eS3V?9q z1w?RG0c~u%H?9GkZ=9F$dn4?6ygY{07L^9!i}->+t1zy@05Y_bdId8=A7S)^^c>b% z{G54d{JEHlSpDxpmvlJ zBh^degkpJY7~Tjr3_|0&jHxn}z|%p?SF~4BSc)kL9d}q(4IA?sl_qS^GMZbZV>upa zSz@@nN08X3@-?>Z`@lqh0Si{VW1IdmR^)$dZu)zsM zswN}?`iPPsOQ4BMv81z3xvU7JxIwlTtPfcsQE;Eq6n={Rh=_reIXIsSgLu~p!YjIl z=8d7)utMWFU@@ut>qA6Y2zas!PBYkp7f2L$tCZrXfu{q68WL%gGU6QTA;zeK+$6WS zHfPBxS-3%D$%bsGgC; zua?W@7gxtCZgjAJLql%6tcM%SQa;(AK$$f{2k!kDBQ-aZ1C=Ed28f*1A%7lJk$v zCuS9Tynu|~K>=3Ut-MX+m=d2)7{@d95DgmP`T;6Yyjz&hne5)2II2(w2-Fn~u;x&e z|Ad4)>fBYV4*D|WueO5^_KD-N8>(@teGo5RQ=!RZ2W#xusys^DFrHHv@ISRV n@X^{F^gr4h7tmI3@4v6j#)hb42|{*RN4T1O4{x(yU0r_xpHVmT delta 3450 zcmbVP&2JM&6kn4NZ~_X5D1ny3#DG|v5|vOZ?SV^$`WH|ki+ee>s;Wwr`k_iy#i7Uc&|6itP2cQ#G%j#u`ZNM?FIwP(7QV_PFx;xxU}Ky1T*tlgRVkc7M;c zK)|LwLr0o^BJF+}t1`M1jR+ck>~DI8z{0scQopk2P}fm6XwYeV?!vG1*4@3fX201# zaIz0x`rt*bKd*k~sC^E9Z;rXe;0h?-?El#AKJe@Dy&xPJIq!YYv{kAyBVQ0`Y&1F^ zvAYhA+fxU>JeI0*L5f?!6 zj-cTxhe0qU7iiYV$rbyf!TV=-=*k`(dN$wm5u7g(x|D=;4WTlULxeGlMbOMr@Pw$rL2kqM7S0;j~LRn<3ThuKnR~;qDFxbe5 zmQ7RQ;Pbwhm;L?F7YAB__Oqd3`|05iJ1rcor;dEvGd#<1sbFOIg+zSXq7?$&vna|p zrS&QF_nyfTX1K_amA+0gVr3O!mglnUGU%WI$s5=-ZW}a@&LcH#S!P&jtc<8biuwx&xKCtSi87|z@v*%*N?ZJ$>!F4yK@@x|P$Jtf}<)srGPp zO_FA3^h^nYi$Ih`*eg{?Or*-`q9GE_zETBw55@v{%PP~X+%*xjQ4$3SQ0k-$x@h7& z*W714Msm1p3ds?d;q{5}Pj=O0pe}#nG-qkvhIWg;L>Px{uB8NKf-f7QpoS!oXXip; zcbItkKnrNy%xsenO_pe|sJk#{yQ~i$0M|THZH- z)G<3g&|j-qMi#Y>?8Z>tInf#il4sXBJl2msI4&TlkrA}WiT%&iS2ZBbPAM&|NHP~J z>jp;#MHVoq!gO3RG;mTXr{VZR8548vDuVEiEQz;bQC<@O6zGOdlQ8NCbH-jgrY~bd z%o5>L5*P$Gjfv>!=-8;kGar5vxH}r=e8^~LWUbA!3r+fmMY;4@ujk9CQWU1rumGB ze6G1>yl`GT8iz2;%n&3c7~Gz=4QM0a3eBr4aT-ByW5x^Eyuj5(TErCRN!Gcv&Lx(? faCjBEB+Vo4;GOek{pz{D*BLADAH#tC{9O1yXNNge diff --git a/Library/metadata/7f/7fae0ddab09ac324c85494471274d6a4.info b/Library/metadata/7f/7fae0ddab09ac324c85494471274d6a4.info index ffe37481a4ac413e0370fac78c8e79aa9233c91c..e50d93d1a83fba15bc3557ee08fbfc9f50a7f0c8 100644 GIT binary patch delta 36 rcmcc2@`h!Cg-CH~QD$OJW>soRSZYymW`3TPg7HRU873ANCI$uo{iX|# delta 15 WcmaFEa+zg<#l}E!CKhcb1_l5tmIK@X diff --git a/Library/metadata/80/80a3616ca19596e4da0f10f14d241e9f b/Library/metadata/80/80a3616ca19596e4da0f10f14d241e9f index 7df107c64a609d05b136acad3506ca3ede1272ed..68d49b99e72e929e8dc850ea1356bfc8b4f7a2fc 100644 GIT binary patch delta 1670 zcmZ{kZERCj7{{Np_S)ICv)$_My3Ms?FlFM_A{#nowlHRS5eEikQAw-qu+nW!yMPNs z%D3VdsYi?i61EQ-P@{oDh9;uKnAF4=Q4-t3NJMTT)rB|pboF)xM}l;vTrLYMK$dB_Tv)o@OC+d@z9Y&t zfN{`*CWs1CsvsGy!T-Xis-f$$P|k;VHJVM=of4NVHiZ+*WqHBA9Z7+jg?d=h^en-= zJmrE_+d(;UgAqN*3%($d)*b*kDz?c{hf4_gtYeeSs;^Rz&pGU@8-3leqSgGOp$jk%agIV<^HB_0A7sbgX!TXq_Q)8b zy@=}7+OMj1r7R$N7e}?G=bAq6)^hv)C-)xCl`q#hR=onnSv20iRcLw*`fvZd!TXux z;dAEG_y~Qj?LO^1L-GQC5MjB$PW7(VR2AhHhH{Oj9MF_&HRa$n%3loS{hBhODc7-5 zte3;}N$0xkgS!%$OfnvOB9)Nu)o-!HQz@x>R*EJ$CnhDvl1BV6_3BD1`u!eWs#Gt3&XYvw|G zE_S}d>^RtAW1%Z2I^Ja#QE=UW@j?anOP&Q8B_QB&M04Dl|6v#-F+ZTzkOwIOEdnhN`ICWS8#w~2%3ZSLUN6+W<)-z6~9;9K?i zr7n})S}IbRE*Y*XuteszUa2E11Lmc)}255%%Nmk-Ej zd+W8R-}|u4H@6hi&2dZ9W0-YKU-wXEd`BiW>K{y|64~ypW66n0`A6%Z_3IA;!!qnk zF2TOxn6(xjn`AHZ4^DyB#*-7{8F|jv*I0+)BgwJ&`0lL#A;5$`oKC~3obv^QMY`47 Rzg<8QXSZGV~P_%_Q{hxbh#@n0pp%>14-**o2_H{UtNtnQmHJb8c|hO6r8z-9tZMQWW8ZVl zdWd`&iBEc#h6<5t{V#WqjUQ-vbpBO;yr#jJxe)Mo&ep5BbWFajYbDUzD$8`O9Qyy$ zwR9Y3*V1vEUHdW-%o$R_I_q5xVIMJM#M@0qF%s9i{d%!E8&ZBXf!E|3`b2Xbb@^2Z zAIdely!Z^dY)-LU#!&v{=?tI@xU@qOY@G+ zO>w>zsICo(DOI+8b41FL`7wx`=vEXe>vek?yM^^&z8{ii94QEVkzPPgN4q!mieW#R zYc~|;-|0OgY!z-3XM)`)o}U%=7R>I)Ed_ygdxAYrCtnl8AUf_0^6vDc8^W%DRUx4q zd|k745bb@`FKiIH@4)OacRfA#v#{N`dYtTj;f3~>0tqL{35z>l|0b++1U9%eCYNK< zhm&UCk#qvhF`phV`5NS|(o%)Wbtz8_r~L}XLakkXtX&+K_be-Vn|$6)sG9bWWzekJS_ znDaGt_WiX*SmT)CewUW6mfGksSlUmMuaNVMK*DEC*ElO2P7IFS;4a<(yZN;h%eQaa zynWr*k%p$`jja_c<4xbTMN)rH94~6nRt&^G=i5awju_eb(p{1IcpHA@;f6>pe;=t- UE>^}T9FF?fGclM5M+@|S0OFu}M*si- diff --git a/Library/metadata/80/80a3616ca19596e4da0f10f14d241e9f.info b/Library/metadata/80/80a3616ca19596e4da0f10f14d241e9f.info index b9ed1c43b1489ff81ba466f27583cb1d378d394e..beedd87c9323f4ac3934ade0bd7cc249368477cb 100644 GIT binary patch delta 856 zcmaF7UuW`hy$Kdl#i>P^i8+~7sVQNpMa7xTna#tH+f@|@J1hfMhRR>HdisG zH{zCk&=i1McDp_cV+N=+^SnP}t!GV^W&m!XlNk%g(5k&*HA#<^TRx(EfX zDVZhtMZlD#tANYU?GL8{?ZoXQQ*jP_{_mZ^5rIed6G=|O!4sU5nX-8T^e YxScXVhRX+!UAO0Qu{5z{FXmtZrj*9*`CQDYjoaULGY7#{FX&^D*xtp(3{>vf$5IG0L`#5G10;N< zVfs~m*81(a0<6A`+b>UKjcDBNBFq-oxPA8&Hm}C*a$@Wujobf7Z~)27SsXywThg52 ijoZEEast&Hl;iSi+^(^J%e!%Vk0Lj76U%OSZUz7eXiL=q diff --git a/Library/metadata/85/852e56802eb941638acbb491814497b0 b/Library/metadata/85/852e56802eb941638acbb491814497b0 index 17ec4f49338188486539991c29a6a37e8c14f455..493265aa00c4aa0e64821687a23a9476746d3fe7 100644 GIT binary patch delta 1227 zcmZ`&OHUI~6h5~PN}z?dOlJx{sDKZU^r7+)gSLVQY7i8o#6Vi1n$hw|OEleR{RLW& z3k@!0AwNK3!a`$+8{HUCH$-Dtxin$zqn>l8R8W}abnf}S@7(#$nL9K7?W4CT{CmfA}9Kh`w;XyL$0H84X}&u z5H|2t!Y3)EndEBF<xQL&`G7x2XA)uD=~9O_tKpFtxCQRenrqlu zfYyd%tL*t&L-gRr0$EE78@>5>fA(fp{c|t0?{!xC*D^E&gw^a79Qk=rU3f<9@I(svo zOzNYtD~UM1t~h5NO(alLT5Kt*BstM?xixTQXD7c(PCF$nrNPAiKE!{Apu2_7q7VTzX&ob!J2qGW{@CW@L@Lw3ei2zyL-GcG9_E-C|6G0HmH z0)5GeYsuJ{uS-wFQ-KTP`cxXbJiV6BZ-Rq3;~BvfrHDRCxj8=|GM=V?z;e}tUbWTh zrsSeNK00wL>@I}`dC6qwee=zHGjI28KK3GdoT&Oe zk=Z~*A^0nJQb)8s+Ht3iHVTD;(g9>(++J~`O_3rWtrF!TfFz{B1Qk50QLYYq!;Jyu z=Z5*8tdc#lN*#PDP`RdQD8Cf-{qpO6cndAt)epG}JJnl&@2$R>wNrgF%T?z$rgZs?IMc={wstul)@S6ZDOZX+8`bPyP8npu>Ad3J1I_3m` z>of~L01+vKPYVo5^3xE!N7xF#8Ag_a%XstHa&NF6J@d_ABr9P>rJf<=D4kk{XNXu4 zFY^r1Dm5&r6YvayA?+Rn-#){sB5q`Dfz2V>5paaP0;eUx+AYu_xNTm6Geum{BK%h{ z9o7kR4#T-t?+6!20$mcolFvzA+ei3vs%PaRP~Ch|nW~3ln#uX{V7V~9xr|<$an5G+ z38Tic>ulA^yUc!@dERCY2vc3)=1_uPhOU;RrXNftlKeN+nU!{kHeNS&{*#mSw@dz;wiPH>P1P%K+&Eo^p+9-Pq!f)$0=bjMxI6@}J3IOu>qa$HQZd32X`oY9>JQEvDChpJGyMHTQ4iD=i%M)YV5V^~#uwEs~V*SZEw-~>TbU!v* im5)clCn|zKFHO$GuinbU(+}fmo(%8b=LPwx+4m2a!0~PX diff --git a/Library/metadata/85/852e56802eb941638acbb491814497b0.info b/Library/metadata/85/852e56802eb941638acbb491814497b0.info index 986d4071a4492203447c69fb28346491d782629b..8c4d6a6089a1204d9ee00ffb98def83effc41fb0 100644 GIT binary patch delta 136 zcmbQx&UCV!X@Z4RacWU!VoqjNYD!pYQE_H|o|S?zmjV#vON`#N_PFlNfI_a2gqyo0wTzm|9HMVU(EM(`3zus%rAZrrj(Hn;94Y DuU0RT delta 74 zcmX@v&NKmtEH(yuF$(1+=B8RHxC2T5q~g?~vecr9ISQL!F>Y(%GBma{Fg7+dwlJK$ TvMHDgp=L5y^KO=mW(EcT>|h!n diff --git a/Library/metadata/87/870353891bb340e2b2a9c8707e7419ba b/Library/metadata/87/870353891bb340e2b2a9c8707e7419ba index 7ad19bd2b010efc61c6d28c9fadc96b4d1cbb1a4..903712d7ee314c396ce6d80da49eeb6309778dc6 100644 GIT binary patch delta 1378 zcmZ`(T}abW6hC(#&E~c?o%=hTIESwM^TtTi8Q9UU@<>%k@`~WU8;3^ zNbJFgg6P3=1$(Nb9umqliwGoq>di=q2#VG@_rK{ZyW{MC?(h80y}xtr|9?koKh~B3 zSQ-Ed+X29Yz7L;J;iz=D&bZ)rJRWB%1VV(yb$-6|CRSW989C;G!czf3}Ru-He24CsRna77P?I&=J zx{}-U87QV)pWKebJ1|V**B7%j5lM=I$dy@YUK8fe9p&Z5!0bOo1J(;}b$GTIf)&GSu`Q|skWOJrOH7tyC2QdW+>tXM5- zzMkMY33pSD8mQ)*I3>P|6kB&tH2kmPo!o`dT`SSFHPu$|PK;J!RIXOLrrO;+g3&69 z3X^k_I`@d&z5mJGN4fk)hOXugGGb`dzZx{T2Kn8eO5pnm$3f>zr!kE_)pkIfr<>2= z3*q6HG9+uQV68IWC75-BSudCkf_d;S=H~>nQ81eXvzeHzg|}x0^v$88=luf%f$q+( zpr1d@Jf`dp2DxOe=Eu#(YD|U~v%cG;Y8?Gh0%+uvPY~wD7A3LwOM{OHTSV+0Qus5o zxtdz|t*c{-0<#K$Ta=8WuI mttvYMCno~E-F<^0d)v9b0l(eT-;XyX|7vqGWwbEwhw=|&wHLPl delta 1518 zcmb7EUr19?7(ZvbcdntEZgY3jt)`}~&^5E=GOKB35?S%oTv1EYFq2^A)U_|iiUMuPqEA=mfadpED69=h;x&iQ`7@B4n|JNKOV zw(+)Yj5#V9t8g*KEI1G2$b$Yxf3UZKtz|M9E}&xo?OI)Am^03FY=NEK!JlQN!2fF=+hSJOw#FXPxj~>`C?W5xpQ_?bNE_lPHKd zgP%ggwXUrSV>H?zCQ35;S0!*;MHT&Z7)$!qx{wwJ!Dn{D7!Q>k#eE-;^)Ob9BZK>f zW3DnR)$`@W_~vwc?$PI0u~3J!_Yi_#p-^lBUy)VQwQBThl;yhSNB{qHEt@C5YuP;c zT|1X@nwPmVten*{?jwp7@pLm4I5KF}+eG{eaJI~Cyb8`*Byp>}uF%@?6OO<01 z0fBmWQzE%&D++34orv7R6_wZlzYz@}$itM-v>~aCJ%C!w+_u~~VIa_p{u#0Dw0 zYj-Y|v+Fp2fJUmC(3CAG7vQn#50M`~`u#}fGn|voJ>;au@@A;#5+toAa2d>=7MZ)w zf2s2K<@o!F&ksPcLGpz2*z+p8HOFp~*$0Wu+u^&d4`TM?hIs$rg}xX}+gpNcXcTUc zA_^Htqsu&i8fiT<8@)%^9h_@1@Rr)oXo(+|EUz}#WN#x`ZK%Jp-Iyn7oVFl^eG6uKSuRMe3ac`q!LyNq7-X$FJ)h;Sku jJqg|JQxJC-TWPOkt+63WgdZ%pn<3x{a9yg~^Gp8+=D#ey diff --git a/Library/metadata/87/870353891bb340e2b2a9c8707e7419ba.info b/Library/metadata/87/870353891bb340e2b2a9c8707e7419ba.info index 8a64cbb8b94c2fdd778bc8f74eda39daa0b7baf0..a35de2ac569bfe56f9d278120a86009e5ac37e17 100644 GIT binary patch delta 485 zcmdnGT4v2UnF$tB#i>P^i8+~7sVQNpMa7xTna#tH+e&o^u`cHa9WG zHR6`N-;{`3cDp?bBR=W*t&FjFbpK{!O2Z?a(7}|9NBR&aa||A7*=}ZhPOIf%$-|@j qRWDxYaDLWIJi7N!V8v&*ybxP9Zr#&?y2ZCIn9L^F#KI!Z&Hw->+og{H delta 119 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�x zeSW6n3<_)_lVYRyfXqziVhGuIGEm(N3!{QwDFVURE_;WdxYUZWGj>>BG?9z@uSObvt+1}Au)G=lk9PXsXTBJy+?rel5|@54}c0A8o1NB)g`a;6VH ztZXJ&IiqlnZBAx;8=p)YkUq#dEUak!jTw|*KD7*5K-4t>of?44-eIsBT}ilc9A~1} z-nO1D{1Hj^TMPtrYmcL7a?#PoES>;m+3SP@vLik7Bhs0>z=A*tpuyKk`9L&=l7KqS zA639n!>{htA!RCv>dokY%*KX-(HOi98-y}uPI&{Nw38`~-y&lyt44%O4>ITxBEX}s zNc7Y%G0WX{(df%R2FWyi2eaS06Qqx~887m+=`zbUH$p0}eg_(8`Px{=n1t|lx~gM$ zVakyNY}ptj>)-C!jHOiY(imQ+=Mu?anCkQ7o&jYF9w87BFcD#F@UQ`Bj9ATN0$g*j zU!YH@d#5aGkI<7RYmT*d60T z*mVb>LB+=&`9N;Iu{7fufv2yxP2-=qVTM4C!Z*^`6QQnKjp0_6jT2T0`o!lVL(TX+ zU=9i{Vz3l3|5G;-Or~KzX21syC-BXOzNl%LkqC;dF(Tu#0yiq*TD{!^G0YctA9zdv z*R({S4KT3T5et2Y7FibyXV{L}S=tVuy4^}eLeXSzI2z*XvCcl!GhynEne~GzcXPWV zVesfJIHrHXsHHyW(~xT*uQYV>(VShQtjDzE zbonc!+Fcoz_lxU2H^Uhn*KMzfFRANKA0+$my#Npe1@da=4#;VE&0}qDr3DPxND1SJ zfL{0wS+&xtGun$VNmfW-dy6!#5(I?%=>QnCQtWvdz4#lla;5I3^9w|}vkuVX>>{rI z%^+*+>H;uR`V(_B_-itZ)Kzv15?@=O!3BFFjZ+Eu?3EM?C4feoOvG0jB2}ame)UdD1Z{z+;Vi zIg3aoxt{Bnrukd+Q-LVkdSWt!@iYp5XnraX=ZoMb8J>iJ5IH`$GIoTQ1x6`sQYyW+ zS0WWVq`gjW0S}NS*mIY5Sff;j+OQ|3q#Wp2QD9WQ&f=71q(Ki@RWJO@1CeR^9~E%Q z&*FJ-MO`YJuV=`y->|k%1>w~lC@&ld;x-Pv$oMM+2 zxT|3`DR)yG`l%vmRka~IjG-tjNU2~1ckWi>1$JFx#A;K~Y)g{Wun~H~Vm1Lc`Go*X zG6-8#brbzq5xjQ!nd?iers?MwN)@>S#tTVYhSBwdx03M9qC;>&;23O=6Y?P*tR08F zJ%q3hg(I->mf;k}_NoySfPjI%uPXG)m<|NCtb>;3OJ(#-sZ?sDq@|xOmAs_f7?L|; z5QNuXbJ2dVwt6PTUUpGJ<`JM#(2@e{4S7yUh%N)_B)Fks5zAMyU?ajR%-jkNZ!dOf zGXrl~j>b~slbMb5VtXUC3wF!s4>0`v%LM|R0}I0E0)dVKK2dE$#AVkE2NdA zcp#iWe+_&Dh^m5FtEAUeO4anY6;c5$t^sY{SSf9S;}(Vcuk_wZskRW1z;*{;t4qW8 z0g3)_v9ztxanr{(Qih!!3NtEukU$Z531C(583QH6dXhj68a#theb;X?RN^RuvuH<4 zdz*X=zd_d-KJkNfuf$eToqh!MrOhRsnOl0HO3Eu3jm7(wiR8`nU?o^!{p%L?r7uueA?;M?mvW^WDxD~Ge-q6& z!F4}g z03A*M&T1`S;QxwTyPbfaGi=p6+jFjKtW-UGIlbYy{ z+oY4Vc)bY(;jo$EvH~6+XC-Wa83B5yPr8lD?NVX--~7_7MIR-vV%&_sYYOEHWtOef19*n~AATwN` zsrF_W)ol8_dOVAt_F&?XnJu#-#Q*gvtBSQ)#V&)ffBuDm>&Z`S$Q+=p*7pttW+kZ# zxgaa1OdLif!@riPq<;Q~&t`zc^9U5mbOQC&t&+9vVr{MS9$RyBI2evBKn%@|42>BP zo&$?J3`5e*km#XU=tBb0nDBOHvOzIK^*vEMT@aKX-lsPU=mXb-TB7!}Lzof|wZixh zkFb9?OlSg8Ot(6#_15lb2+>+v#8zr_;YXBlOC;t1;=B$kuyO(YshHVAczjhaVjxTU z;`$@NmU@PbB7|6$ez{XRP3V2=rH%C7P0~D?w-I)2CpJpA<t4ofC2sW1v63UYggS`?8J(rXw3@YxAXlxJ&vX zY4d<%Z6gBXYQ5sjDs8@O`k{X5?FICn5y?{{FaSqf!WX?bCN_%}6^=x{8QM&km^i(c=C@4+P;{kB>eL-oQK6_A# qS6Cw<3?1zXNpShF( delta 3629 zcma)83v^TU8PE6KBu$f+rY&s>eWmXQg+72jXe*SLfRwhhl!vS(O>Su<+=L{RwjdVf z15gpTz^8L+RnUoeL^AsaofCCFP)9{vL9I|>%rk~t$Jy9awEO2Fm0CQ@IXCxzzwh_G zALqa2jgZgZ3(is~!fsQb_zML;C=`1BQYa=*m^fi_bH3vH!NEZgIKjmqS=2VMst#qKVG(%>ZMN*6rG9uTNB`Ms{EMRFoKl&22w$Ox~EL{m7r8|{V(S9tK=|s z1Ar{44P%Dv>hTYNbw61J%8}my_ z3da}Z=u8s^{U+ zTR?7%j)6wfl|q6%J33O%Pc4=^_bNTdqQ8%qTMVUg+~gkWiAI%7?-a_f6@|$)g4~ z;iC?Eeum-7&!}BRI>@v~U#0SzpBCv?Z}NkgrC&!ge=)In&VeJ?^c4IBb9CGLkv*6V@I zY6=p;!1|6tsAibYH>%tk4MtMqpLxz7zYJQr^vxs+`4)oN@?)@3&2BmgN0MT1JgzzN z`YW+C|KISrI>#wC8y&RbG%xt3EAS;b-T<}S_Klvlb%IWw_OgyW^k0~(^}D!6jn8Sx zQ3iTCABiXE*)6;YHjKhx((~QLVhvapi2RXQT&x@x%+Dl^(u{aFefVq8(AE?jPiKv& zzBb2|$vBSsQm|NaZDp8JFq#JL=2O*m71VUlhzF=56(?W6Gkk&{%;TuTsTixdwo8Ud zHzncoyhuf1%{IHqZEUvvunm0jXXZj8txLn$;338^1yRY^P4A{*0ezQ@`lMFx;%b%Z zO}18Xz9{AVbj@(Z6KPpG7HfaBd$`ghe>fj__3`NmV!uttX+WP9U@i4e!Z=zx5g+oO zmQ2E1y{C5XUkW`t85{hJ>O$_fxiK#%K&oAp#7D6g?E@Rob9W`qd;}d7(uUBp+xno_-RQsZlkoV z7{S77a5u21TC4zCSBGD-7ZzbBvip|eF=Tzq@m^q;8*np_)`WUGvH~}fY{D4Ebr&Ez zZsv0Au!wy^SpCAPdeLb!wa;=o?aoHpWyM^--JTBAk>NHxOmE%CjmNLTcSyAn^(?`L zvjx`YKm@9H;tRCdg$_2yjrjuOLhA))-hdZ@E$GBTpwRmk$vC%(dvIhEhM?Dg zo>kq${iM4z+{3?kE$rHin}oTNg~o2dOtM%poSxW%$EmQ5Gh0?+2p!sree(2*1iEhr z#?ry3P|eu=7$s2p4xGmp@5FC3Q6tunEq?^pqECXxK7b)?cNcye#JZmI3TN!aNi^^h zufolTupd~>OPC6D=@ks6sW0;!ob1Mls#>!siL{=fkySFBftp}PYm?1tHqztIpn>k{ z=25V298IZvv4rwo#YlGN?{Gbk{%!8~D-k^2l}9lNsh+qsP7I~r`~g2B!%>`04@Pjo z4e#PJs-||g=%V~%IA+3HtHs??%KI!}$U8wTqW9J{jA#)Z?iNbgi&NN}$8a$(%KJFL z-unOxm4-T}$-IhRdTM=FpIU2&$eVIv0ex|rS4B919{Se_Os5Aw<8fa87_DgPWAePSh*rnb3~ z*=i9bvsfXmw23ptl}=G~4Mnlq)MotwVe%p@J_IG559pY%$R!Th^{<-7>E25rx63^l zGHvm$A*%U17yR^ZILqfjY8AhaTcxVzW|!z*GGx~7BinuCHg91PeejeY!C-^ep z+I7m8jg0OXQl2M;sa{s&Qe B$L#soRSZYymW`3TPg7HRUStb@&CI$uo{r3x# delta 15 WcmaFMa)o7r#l}DhCKeqg1_l5ty#wF? diff --git a/Library/metadata/8e/8e0cd8ed44d4412cbe0642067abc9e44 b/Library/metadata/8e/8e0cd8ed44d4412cbe0642067abc9e44 index 061ca738cba6d22948ca7acd1dfd02f2ff53356b..dd6cdfc7a1577dae27cd74907fde996b4c1243e2 100644 GIT binary patch literal 6104 zcmcgwZH!z~7(TN*(=Q+G()y-bT}9RIPHC;r&f3}P(&|tp2=;d7cK6ENnaRC(uq0fG z@JEG2gj7-?zJHNOM37R15D_#%1V6;*FXErXc%Jv%b7#)(Y@*`XI}l&Y&J7l06Bg%n+sPw^ugsv^*&Ji{^?y8 z|Jb)5H>fMnGHA5(l!|dnQ#vv6jC!tH#jj>mOa_kAEu)TrzaRMFxOSy@m--GIE79lp z?l!z1JZsQjkbGx&?(b6ZdkIgjZG1b=yf(a@XMT!j)F$x13?9y(&&b4_YgZBN6z%472{PVtP|jAw30 z`b&~)(cS4Z{Af4~-AI*6QE<^{#fxge=pB(;4ZT|R5;b+pM$dQ0if~F!G%3y&Hw>K# z7tmOEofA~O>VyhG$+-`m?Vlb$^V5CzPCoeQ!^2sw$b)E%!ZJkfU@`!=%$WhlB%Cud zU^(!E$pFJMGXo6I|D6H9B^h=oGT;wnz!``SGfXldW>(r6+=K6R=Ghs16mea}dIXT5MGJXVo=JqLQdROV4d=2`H51+pz z79J}Oy})}4#O*k*AdW`7T`5jYam_!DKKWPT+KIo9;|sI-Pa}>tlYdo;YknVn@}G`t zCw}HpC;l^29((?)Q(P<2UFdVY&q}WUU3?PFy4v0825zIm`;g?NpS*47bcomDXXFQBQ!MTZtSz%xLCN-vpoY z;Wne0`P=}X^WkCEX+Cn86=u(;b(qX+9X8hmcE5&%z44wly`TGQI;foWTQbsf5k56z)8I9|*A8}X-ocTs6>y&S2 zq_~~`lrkFgpZmxhd6Y8ElePAdNLhj7^^s(Xzcs?4@vCqrdHB1|PI0}DRs-Zd>PMq- z{wz|5fM?Mk5L79t*0#8jQ*Y?Lop4zJ8bpSgPRW7HMrxB2PUhDRrDKX7?upcn>BtTFXzk$H+QGxM zgQsifT;r@W&U)jVXPhD9oNt_bi#p}br{wvRJ)hF&!S6deTt8G0e>d8Ode+5hp?t55 zqSn1;y6&nI7|>?(^&3Bb?wH+c{4b`}`05WoeeDXMOh+Tp2P5&6r@7u&n5ukYHyW3o zDa)#YOU)(ccN)*A1HG>po|)CE;i1GEop^4oD}RjYO!Sgo2k zP-0kBGY4A|udB4HlX1Pc(kMxrF@9Y9MB)n?XB_Il83&R0n7ADWk$A!FIP~E@+RS_q ziI0hAB~Nza8RQp<7d&UZb+jaYo|T7`c%3KnMN*A4Q{r_T=3CV^C0^s2pYh>yDe*e~ zHor)Gf%n+_Es3}JxnE8E?}2alMdD+AmyZ`oS@^G`WzjB1({a;pckd+lCB$LOXX@lf@EOky1Y_cM-WCAs-)raXFmY*i zNqT9DYyL0MC;tepo%o9!Um%ywKT2Gh&A&0lHUCfOlm9YYJMnMg_`+=dG2+r}{>u}* zg76Qdt+%;B;8mO*KHtnrz7y@N z1yfSnn9epgitry(D4<*A(2By*E}&|k?Ct z9>;(ma5a5m?Z)$eF5@|~z3N5NqgAYf+h1w~CNmH5^V?%iAN*Pw$xR z%p7;1=kjdoJg0s{+vfgd@2>BPTb922`*`2@^B@0OEaU5u3kFI-Z6a`{dil>{I3Q#L z`VD-5OQezXKS(n|#0NaCO>x5bHGk!}M#p@lDRK zUP%7WxYqF-?ikkEbA0bkr OcKIs+bD}#d|NaH?11?(t delta 983 zcmZ`&&ubG=5T2K8(hzFW{CwStQcWA9v`J%)iPh*vYpI|uc+is)5G%nNbMfG<2agpj zgP`~i=)r^Z;=w=!MKAW?MGNB1g9i&ec<^B3H@llwgLyE!GxL4lyxH0JKIdAggGAwv zM3EN3AsWDosF0n^78dff)o!rR86)E!2SE8kq;4tAyR`OXd zEsY@#xEQkB^yvSn{5@2CPM&?<8ZWAT&V&Z}ftpps>uSy%!iLwrzkR%St?}vkxA*nZ zj6QxAij9>@ku$rZe{D4Cw$R;P7Wv-obyVH$byPd;U0)pxZK}BCeEcQ`QblD9uDy?c zM77$_<&ah>z7p1Igm1wg<@@l{Ja1@qfSX}GoqKWs4OWM{70MT z@u)Tr3u>FA?X)*(YmfBM7DRjQ=(bkTL-P91%ypMpv6-iB<{4qCY5p0jaXmio zZ!F%qQLA$+Uc4k{hiL0rx+$%QUxvw5@EJ}lM;_c@j Dewwi) diff --git a/Library/metadata/8e/8e0cd8ed44d4412cbe0642067abc9e44.info b/Library/metadata/8e/8e0cd8ed44d4412cbe0642067abc9e44.info index 89be8d9b8edb7be8db06f4c7818d5a266e86175b..074026eefb98d09e6d1c612ef3fc2ca99e5ca352 100644 GIT binary patch literal 33726 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 delta 24 fcmdnj&a{tZg2l!_H%4ZK=-A1O%{y7dm>3uUXm$qT diff --git a/Library/metadata/94/941dde9a9ca65d74489c024e76c8bfe8 b/Library/metadata/94/941dde9a9ca65d74489c024e76c8bfe8 deleted file mode 100644 index 1500f2bfb53298cae1f01bd6237d5f49508768dc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4301 zcmeH~O^g&p6vtoh%&Z_Pf}e=WE{k6%v)ioet_fedgX|)h1q6%)p>b+wo6O8^x_b>= zNFR(|go6hYPZACW;tAr(lL>0XXd;I>c+m@qCl4BLB(DE|Raeh;JD7~di`loS=~ut5 zepUV6t5>}uEAAJ$`#TX?i7PH5Bjw@p$h0eeEG#TI1%P5vP0f0XbwIeszW59Rpfg!4TpcHYmlF7mLZZGJW3kL38b34b)l zTM1v6!Mi;g6@>krw}DL4CQ zBL;CFmC-2NFWiq~;6?NYH5GXw3{|vOMP9{=JgLq5RjEQdGIZ2j-Q>DCxegzdIWL-d z#cL>u{DvA2lozS0%m#kVZ+i9d8LwGWu$dA))ZU)*0@aLU!V72I&1319ijQX^IdM8t zA*VJ9<~9l@HwtDq%ClA(vC4B+8MVroRi3ws+currc2nbSYTZrEyRcvPPN;e)9zAs+ znhn%`H7#}jP1Ow5tEcCbl;F_i{pY^gy}Iw+%1;;0ZoRRg#d`6w_PcR(H}##htcAMI zTF3g%*fEb8KU+r%i+CCN#Jpg<8Cx^nk#~9|{vxr%`rgS7>$~NP?XbREJIvQlV2An2 zIh>gHvUOJ1_Z{Tfyl>a{Y@KC&H+gK%l@au5pYLq;L)JchV)jGUzOL`Qhk5tmN$xA! zZP#~4_JD2IW9$))vsX=f^Yuulzf4UAHm&uDneZS+2%HB9DB*HtH}zKDWtqs z_Np-SY6@sFJnRKczgd%B`23W6{L_Imo8EtI*XY*rwsjH9FqWcU5tpuxcb5HIg`ee! zAt(*T;MOSO4&M?_{6Hdnfxm-pP|Roovj_29XN7$kca_r1xzzW()0B{`4AqlhK3l-xsi zNtQgY{8A0uPVYBCUX68e1%n8=bFj diff --git a/Library/metadata/94/94fb4a9fda44f4b40a63908a3e471012 b/Library/metadata/94/94fb4a9fda44f4b40a63908a3e471012 index bd795b9b2195320a105f3dee55e0be86699f4553..c998bb5e520c0215fc200a3f82df2c05d2d748f3 100644 GIT binary patch literal 15953 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 delta 2483 zcmb_e&2Jk;6d%WqlRDknA+a6j%VWp+aB$X%69BSIiPo+=JVMHN!j8w$N}0s03Z1ROa8_YXiK7bFf~-t4ZuF}4c`M%kU2_wjqb z_uh=N-`_k~juPU2osgjef(t@CI1!Q*C&lFE1o@*>D%tEPQ1Jogx;9}WHqt~63Ay7# zkpmyD=29*f?c`1n_pPQ5rEt&bujA!x;MHQtAI-J>Y87Z7NmZGq#?P)?J-QHs@KEG(*NWCKJBoofG;}(L5sUtYq~C(^+Tot{Mxx-6JXZ6Xy?2AzHn=q5IhV- zQ1wlqx7~s_s{`-N1)#ONcfiu{6pdn3S3rO#p?UbOf4NC;L2;}LeoPDl4LeZO54VHj zNecp7dDz_pKLm%TEMY_3N*m(w1(q&kMR0K>t7=yptG(n?uQem9HMCk}%Ky z@ACb0c9bVACrqQW`l-{K zjYjY|=0>u(YDwo=>N=L_p<`!PM*?hSqsK*Of{pPDx6g%rK(a^ zVVMfp^?1N=f?~`8_v3xWuGeH)xtHZ*jR%z9kkLlf@kXEGSq9-V7Wu>R!P?t*DdDpx zu(C%HFMKrD4!@7jASJ$YC;jH?aZG@(CY_Fn*YrAiD>c28=qejeH^ayME`ELVjJnYM zB>r5D82Tn`C2tFlFgN+CZo-?yaZljxAn7v4S=5qq{IA#*iOrPWAj(GQu!S*Bg=&R2~BrE-v9sr diff --git a/Library/metadata/94/94fb4a9fda44f4b40a63908a3e471012.info b/Library/metadata/94/94fb4a9fda44f4b40a63908a3e471012.info index 6276b0a056261288a8635edcea48dcb6d4c86694..64e86b39a0bd4b337d8b3c82aa65e3a7f375fdda 100644 GIT binary patch delta 106 zcmeysGM#mTg<)}OQD$OJW>soRSZYymW`3TPf-#o@5acE1rdla@_=kAMhZH3yXQ!sP hq?TnSr%v=eC9IDrJXwh`ix)-Vq2 zYX-n8jz|}0K!!zPj9=27Sj54<4+;{0;z*3?=-KAT_ZWK{`drS=cc5|n9bg>Kbt#r_ zflkgwvAhpDS&0y0`J>Ruy9puO&lv0vLgzkjB8>HT$A!j5z6RJiNM4Yiz_wrx?W`r& ztss-&ub{DibIKig4`cVDPaEsdDAo^S&}ruuLWteZOVGLQt%NaoS7tx-Q>XnPS{Tcg z-4A_gxbbrheXxOZc`Nzn*aVn_~B0g45`??V7gv`h-82kN>Z7w>v!-A(C3>iRJ>dna8OfLz&boU>(lHeub0Rr=AyOfi zHVW1@3KlmCRyWFHRvEI&<5n5A%7|5-u!`F@o!WL&<8Er*P0hQoU-!X@35x_?eJL-qWHmXZ=2y0-U?ub$c1^Lpjy_ZRm4vVD>D;#uu??=wn(>aj)+O;5i5=GWPIg$|EnjYj_1)TGzJ3fl%vY}A z#C(^nv%03y?B6K-EJqA+ zKKwk+D+#}~lMlbO^S9yuoZpoV&%X`-2=@P9g`ep=n%JjrJEa$oYp3+$^={HMn_j%$ zm#6PE`rN<1-s8Xehu3>2`@G&e+2{36o}}q`qcs;qDp*0LPKPScHNA0KC;5}}&1zlg zVw@qzy}HSwF1 YC;q7u?0@xFGM~Q*ZX~?p(~WV^pK(v&djJ3c diff --git a/Library/metadata/95/95553d89c282bf141b499a612fd87915.info b/Library/metadata/95/95553d89c282bf141b499a612fd87915.info deleted file mode 100644 index cf5621527901a2a99e6c6387c78c475eb57d7a72..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 579 zcmZ8e%TB{E5Ue=z3tapMZPEss+$dE=B!o~Zl|zN1O|nTX*-qqjDE)i<5Ph&W&y06x zXFoK4b38s1p;?20iLDh7zJtWmS8eA^8$x_^2Qvlfmh_+;YL#Q$JNOoT~u5`hpe&gE?8+!0}3PxupiKkyvbOa zB+0y4rgglGt2SCh)gn#dF^bz}`IJV9mk!`;_^oNWH3)K7Os}^QeGMXS?9#mDs52JL z;&kTfcG(vJMEN@Ko@xbjXY=F(@*;yEq9C~d~ zUk#i)FP>bDsu8#uh4{Oh3)`<3sPpiD_zpA&W%IY4@W-}SAPQ_zqpFeY{dOR@jo97Y Qnei=i)%Inmhr7w-7t4LGegFUf diff --git a/Library/metadata/97/97decbdab0634cdd991f8d23ddf0dead b/Library/metadata/97/97decbdab0634cdd991f8d23ddf0dead index 41d3471e7e5c6ab8b776b14758956c4a0ecbc3e6..363da93e89d62eb4809f3604bb65ed8b77cb480d 100644 GIT binary patch delta 1164 zcmaJ=O-vI}5T4inHf`B9=vs}jSVSRMTZIau(kg0EVpBEo-%xE$YAV#$pK!6u#j`lx z@Zv!ePfCb}iwC0zycnY%iJ=$Il9+ffq0YQrDmB)(ncerkpZ8{FcRz-{w|4_5832C~ z0DLsp=n1{ySU7q$3d^-xO_&L=TIg1*q0@FL03g5wUjeibflRPM0H9`5B`e^b3AA?t zG&eC;gMDGJCJ38BqjSMQVK>-C+b#UzXvMsJLUCH`#@I zqVH~j3e9;F&SnSA^{TA0FAoh}gz-3gtiXMFL`&9F6^7pCZ76Ferrl~_7t=JjIBpUb z!L}ZpB(|3+jag@dH-Tc0|%t)kMfJ5JSdezQh7)!5C5h7W+;zH zWl}1KSt*XH}g$ delta 1109 zcmZ`&J4_T&6uobD7DlpUXE(%gF%c9*CAjR02tv?Vf1w~6N&Lk4!5BXnvu;CS#T1q_ z-D-x0kCb6g`)K_ZKvVQ_gyX<&Z{kWGchuoWY-29JY_c!wpyZK#;lO)wyC%Q&=;Vw}ArJZ;MGXw>%rHa_)D ziTb;Ui<}9G(-5-(0NEW8z-_q;zXeTL2wxZqCZ%Np-hG7B_rk=FaE>>JP{%Tz*t1^A zY@Q`;q&YDJk1?v{B!=j3;F}Udlvu-OotDH97&6=g@!x0I*T9|Gu)(h(20%oOlMVJW z!T-C#Ao0+W4GuJLBM;y|h1swnSacZCPyIqVB4U^X7JnsvwpZ|Zst5TKm=WD;JTt2O zDNmPMGp$s-jTK{|;!vnKOhv&D>ul6oj+K>Ac_dUGrP3VJ-t4qK$)0Me-I=*LUDfZ| z(Mgf@XFadk9C=cK@iM0EDCV?W<1k)kURgWlQY5gpK=cxCUY~YwdNtRrfqT)+=qI<} pbjJ5yf4CRy$;GL2;LmF<=jK^}R;k{@lS@}}BU;LrTq}wj&z~l8&!zwX diff --git a/Library/metadata/97/97decbdab0634cdd991f8d23ddf0dead.info b/Library/metadata/97/97decbdab0634cdd991f8d23ddf0dead.info index 4cbe3c7113bc93fff43d4739090fbd9403e162da..fc19d4ed568b7429b789dc39ef3bb063694cb946 100644 GIT binary patch delta 36 rcmX@aa+_s>g-CH~QD$OJW>soRSZYymW`3TPg7HRUZYCCECI$uo_(cm# delta 15 Wcmcc3a)@Pu#l}E3CKf3s1_l5q{{xr+ diff --git a/Library/metadata/9d/9d42e4d46d897b648a1d6ed58a18e8a6 b/Library/metadata/9d/9d42e4d46d897b648a1d6ed58a18e8a6 deleted file mode 100644 index 9703c7dbe4ca2fa4acc7544ae8781559fb5be1b8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4528 zcmchbU2IfE6vxkPcMH@H1V0c^KBOWdwq2m5$k&#(q*V$91QHFFOZT>1vc0?6y^COs zxh6(mgg1@E2aOM=#u&vHjZtHQC=bS{Nj1Fai)ef?(fD9uLjC_|?%eHc7qu@=Gr4De zcjnB@nKS3yt;qauL>9awBJ)LV!b7B^bwg{%XhyD1O-(tC0I8J7rFJKM@%IaV>~39f zbjM?t=eC3QIwB1mfwD;?LjNh%h(sLxz1}F%yN*N{j+Uv8e1*O@qRr{dcn1>u-wek7 zoR`J$rI5*4SqxtVnJi6+V)%WK$(smKxSoFK-vF8GoI@C?{!RuGEBRbtCrjQa--9j1 z80wivu4<#~13!Vvc5}iVIfuSm(WZ{;P+5!}`XN)#^@J#9J&!=swUAUyS+fHT;#BFRtMeF<(-{&&QnmVBz{X?*~d2xkJ$^zYy~~Yxoy2 zUsl5>W4^qG!&lV4R@CsHW4^M6{}%JRYWQCg>J7Kx-wSrbCQGfX!{ZU%*4<2@pHow zDZ1hDJ?^+Cp+D~Rlsq@|a#ASyV}9V~dyc!omPxK3(H_ul0cjVayi9U_>FuvE*!}xCabUlpk zMi2e+x&1n0fpds*Zm-+}(s#+EDjT zsc`!;T68a_RL#>?xaD=#?$u<4Tc&sIrcIW6F}-V^l8-TOGp-0-x0>E{*fw@%de{Ba z!fR&i%=E6gBeX*|+FYkf@1O9UeGOE4kH~F1RMUH-Ot*td@2bCT2bJCxx9!06Ue69p z?|PlK9hlxVPbs_64)o7zde_%)f81{co|5Glz2Bo~a=$C_)aPRFSEcue{q6m(Vt*9! z>HBRVjL7Z%@*Fg`_sjHNZ@*0M_4d0a;VCIV=6<<;mEI$cNvm-4Ox#bU_pIhT-{-;E zpXpt%r^)iebqSwi`61Igiz9Qa{nC%Lp1GEvwCcd>+HCpx`h;u! zX21Lypy##qZ)E@MO#KY+_4Icp+>sX`PoSny84t9d=(Kk}=3V3{^dF|B44tnCMw+yQu9p7GXj6YT zp7r$aWdH0;{XOKW+WLEAK9sNEb8KL|SSW>FX%-1?V5ATXxvB}69NTgpKN zGu}|i%NN`nKKGCk^KLj=D2=P{M$~6 zSm-}bqVgwsDt@O&i@Xp1Co1##lK35(|5%uFuT`4yqEPgLlciy|=+EqRxnXt13>{SeGSCaxKU3pRtwV0U;td3T=(~CU3HSx|hNX(vfal%=g2*Ov q*bj1r$ID6=Nekka@n-=f_&P6vgo>DSrc`sQ*>~ diff --git a/Library/metadata/9d/9d42e4d46d897b648a1d6ed58a18e8a6.info b/Library/metadata/9d/9d42e4d46d897b648a1d6ed58a18e8a6.info deleted file mode 100644 index 2f2182677f30514f4620482ba520f4d4e1f66012..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 598 zcmZ8f%WlFj5JWxpEBpfmLX$MftrVd~sw%{R9;zx@@FrN=IFaq}`1|^y^5|YH&yII@ zX1!8)5O{pm8qER>jBLz7<0rIOJTlgTkZbG}YLo_y=%hm#lP=G?9_2w*&|Os1yiu8CphFwaI?P!-cdCBJIcB{&d&z*l_gqeka0WU6|2m-M?$Rw>>D(L z;04QhJj0mBDbMnkZ5n3~@f3Mt&kQq2J+%inh8M0UD;gRh_2iVLRT@vOy2hNy)2Z75 zmE5`@YJsX?Pf;|BlIJ|hLcNRlHv+B8MZu!!Ecb6~g61Md@093`CwY^ZrKmfHE%p1y zq6Awc9lUI-k8leq+W}44_MI}QZW<=eXP=x8k`pcmqQ6x-^S#`Vx-|cXZ$Jr4@xy5J3qq#0?f?J) diff --git a/Library/metadata/a5/a51c3dbd81ecb6741b7a2c5b06dbcb2e b/Library/metadata/a5/a51c3dbd81ecb6741b7a2c5b06dbcb2e index ffa60e6e9625dac1f2e09c193baccf8b1d793e5b..864a84a7742959febc8b91756930b4c63af7f942 100644 GIT binary patch delta 3969 zcmai1&vP6{6`qw8Y$Ur#T#9hY!D)&FNf57o*h*w$2NcOMBC;){wVjv>s@|F2-Hv9u zhv}YOZ7%Br1s5)64&0~!Ra9=Ninwyikpo9gz!9$e0TJKpp3$y?${hArPxpJTzxTfH zz5V3hwLg7Pdp!uIZUw>MS`Y*;1i|z82!fUR8}+5uQt-vm(NS$23lkG~J32aiZ|tAX zjpIwPdiJL;1wkzs3;rGiPv&V0UbM9q1jVOkzwVyaf?tdUPd={&PtM`VbLG>2luyTk z`grhU8LMaUI^&=Ix;At8+E@QpJF|q}@bq+k)X@yqMjSo;_!)kl{?$M9ZeGF35jUUJ z8nxPZaWwfN#qI*9&jY-G2wfuh`12p(JqSL*>sKlW#t!+^A0~=)>g8hM`M*p&#!_+j z!sQFg^`-NZ>pJacvfZ(4E}TF7`Gu`o@s;Tp#__E9bo#Zy>dNZ!)vMR9Gp-`GyYVjT zip)r@*iwBFSf8IfKlvTD+mklz2yC!|Cl7b_Zg+*UroP)ZRwQeor30-@CoDHowVAOQ zJ`A&(nN)+CJOPL`!5sg~G6w&Z>yXACF_*W05qx8B>%zw>oh) zg({bHiz%#h1-qXL_05Mn%;agRGfM$@2P^e!40e_1iL74itbFSmznncQJ*!1K;q;9;A`ecPe%aX zB$Y92Nuy>h12BR-M#75FR`uYLDsk#z9`AGHrbLOnZ7M{StX+#W%l&80KZ(D}@d0PB<<<;+a? z5l4p3pPq~I{IWm)AdOr(j)cYhO=b<-l1lJwBcmb#E)q$XJeD7cvi4D0cz&0sDPpg? zV#c*Q)~4ph!a}?FVCCZJF}QkI`F|0xNQZeMhzsBx0zmc{XD!iVBFnza38Y4XFb-{$ ze+l%;XmXedGnsX}Uzy64HICID~Res7d zo`3_*4^crs`GE1PZHnJro*8)68u3y}7hp{IzF^Wa!A+lh_cETc5STT2xIe%uNcBd+9IL_=+3}>V<2I9rxDB}roq09CDMc8_3h@MdgoH*dFv8Bom_*6f28kgBU-h{3@htTv@>Yi&e* z-WLHCemipBimXM$)TkgaTFCY=hVNAoaW8aDlmu)pD*u7CI>^Cs4;3d zfGu&Ljk;)n`J}mUaEe*zv*<|`?pKy~P#4{iBHINw0G;b+B^-XK@mL%{(2&fI=rhQ7 zMcE3-|0&P5P$EOmsrp&3BSQ$5VM;@MRhv+!rXnJg*Neq>m!<|NN!eCwas0Nxoy2B@ z>q*E@#O6>{Za1|so9UQD7Hdt&u{(r4O?QaN;VFb0i?qB zOegDU`H?)1$7@*w6cDJ*G)Lp1!}@rql5dnxC}Luo+8Pu8i6b6(Sm)J^9YGh z@<5JC$s{$Fwj+DNr)LJtv85ae$dkscq??N3sD@vJp_*?%oOHGiozXcc zWGR2RE}2iz_ed*WXMLRm9w@#Nuz)H{xXO8a6N1DeIwX$qIXx5{feq*phiwlp8oGAm9KB-->0du4U zx`|_TN~n>QK?B)5X$j(~z$f4`(i?n-BNSYT!W1-wbubKKiF!trl@qpx1$ROK-@y=8 z&NBl#&%+RTux?M-;SdFvj^kmmG*h{_gG)V>=+-_vh=Bs2e7F{3B<5O78HuE3&MXuw zhfcu{ijP#j+R2sF0|hH8f{nQ}6IYI1GOgnNP#zUr4twyH=Ft|W@tDoRxX2Wb*V1&B zT+BLMz`}N>DH(1NoT5Pt_p~S=*2cQ?#1jhc?O$Kxd6jNGVBbTF`hLP$Bt#S`eFQ)fr7(oWS0Li9ZV zg+ANEHY2PXBO4$_J>ds3$&(EcTmA~I_PolMZ(X%_h)_B5FZQn2_Ty51L#~2s=u-8a@2|`@ftj7RC0<=O-() zPE0`!{8f6Z_>K7fOQ1Z;qlsF_` tt<}l>v z$%dCy;(;Gv@q|?I*he7z19$}f021N}!3#g3;f$T_YDID4v3+Om+B+YYvZ?YQebS}vFVF&MhIi{Fml>H41UJ>~uGdH2u2RKxA2 zoz>ZcW8VE&@O^wW2W#=5-g<&p{eQgHD*NL5XLkKs4f}uB{^RN5Wc`ls7qZ@Z;V{nT zf8(rXU3P#~X19t{{914M{^HO2KmIM3FfPA(l%vJyg4Jrvr8BISc>8#7<6gtu+G_5b zpFkHbN0=8?)O5Y&a&cq*+gedO_4E9f(DQaji6Q(28LN{ltR;YY9qOp)OidooP1M5gkm0_B zq}wfSw9YKH&$ixpy-h+!$X-S%6Hnj@3d)j{6`^KhG>(7?FcE|~%I znUbZO%Q@3(l0=TmiO`A4P2~z7P#+N8Ryl=2x}s15aVVOpT$2e|vilmcZ8oH`Nt}db zolIFn2w~zjwWA)EX%XIaUjvoP$g~NWglt(01h{5Nq(&Wz5W(1lB4Zk}%*);EltsCL z%A6F;;&lAw`da^r7-Ns(>wDK*1l+5N^!IF%n&7IVrdZQ&y-eij9x$|>35&3@l#Oye zMPFY&v5`QP31t2`lH4fP%}d3P`f_t4glV9Gsof6e@cpc=`b5b)j9VOxDF~l;Q;qU+wg5uC975Z47rEZb4 zYvA0l2G*soRSZYymW`3TPg7HRUE+!TuCI$uo_w)-# delta 15 Wcmcb`a*$<$#l}EZCKgF11_l5q*aMUR diff --git a/Library/metadata/a5/a57cd5c56c9d75c4ba0ee9fbc6e1d8df b/Library/metadata/a5/a57cd5c56c9d75c4ba0ee9fbc6e1d8df index 139d97b3c0259e54bbd1715af6b68b4b78a5589e..88e007a8f46dac10eaf0539f512c1078f7eff9bb 100644 GIT binary patch delta 186891 zcmc${2~<^Any?M1IH4xaisAq&gA8&3MdndtMg|d)NkI`1WKaUiCT;Q8Uk} zZx%NHo^X_-Q z`dj{D#*9r4*#yvYyMs17o{zkbLOo1g`Zpnx_=zF=KIDcIXjvEIDXDN zCnsko7pH(RPF;btPT->mIXgL-7fu*y{mRLyYq_n()z+FZVUDxY3FpeE-kRX$?A&Vp z)5JOR4%%=as{eC_j_P~DylB##d1`b;+g%!Ilh)_WS+ss=YhCEj`g^lR>wno=7df;} zGCxM^0@ziQmpHWgn14lUq^;G{p*7PyZStIXTWzh&99mncCDv@-OuMP zVBQAYMVItB8@`VN{B;}L*A9La&AexW``N*j#y%CepA*K{|BWc?H?|J`4)8xapKzPK z{y%N4%9QHgNUytGL_t9U*5UVJ@`X0|Dm%Cu-rrp6Hb;xLwVLc&zo1ttaOEf=I(#wI zT%4}btI&oY>HsgY!NUx=vlAZLRSaAyakT-zgO293#-U+^P`CrU#x}rO2Y8(g9$~

aU%vrTg;qcGdX^c}a?K>Gy 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

Y%gE+ZQmB>(XAzM@l4A>5y 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 delta 188586 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